20164305 徐广皓《网络对抗》Exp9 Web安全基础实践

 

1.WebGoat实践

(1)wegoat安装javascript

  • 下载 webgoat-container-7.0.1-war-exec.jar ,开启WebGoat,在终端中输入命令 java -jar webgoat-container-7.0.1-war-exec.jar 

  • 在火狐中输入 http://localhost:8080/WebGoat 进入WebGoat登陆界面

(2)攻击列表java

  • Stored XSS Attacks

  • Cross Site Request Forgery(CSRF)

  • CSRF Prompt By-Pass

  • LAB:SQL Injection(Stage 3:Numeric SQL Injection)

  • Command Injection

  • Numeric SQL Injection

  • Log Spoofing

  • String SQL Injection

  • LAB:SQL Injection(Stage 1:String SQL Injection)

  • LAB:SQL Injection(Stage 3:Numeric SQL Injection)

Stored XSS Attacks

  1. 将带有攻击性的URL做为输入源,输入<script>alert("1");</script>,弹出对话框1web

Cross Site Request Forgery(CSRF)

  1. 利用cookie冒名登陆,用代码伪造请求
  2. 在message框中输入:<img src="http://localhost:8080/WebGoat/attack?Screen=288&menu=900&transferFunds=4305"/>,注意这里面的Screen和menu的值与右边Parameters一致正则表达式

  3. 提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的4305元,攻击成功。

CSRF Prompt By-Pass

  1. 构造两次CSRF攻击,一是转帐请求,二是确认转帐成功请求,即transferFunds=4305,transferFunds=CONFIRM
  2. 在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=4305进入确认转帐请求页面sql

  3. 点击了CONFIRM按钮以后,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=CONFIRM,成功转走4305元:

Command Injection

  1. 这个题是要求可以在目标主机上执行系统命令,咱们能够经过火狐浏览器下的一个扩展Firebug(就是右上角的小虫的标志)对源代码进行修改,例如在BackDoors.help旁边加上"& netstat -an & ipconfig"数据库

          2.以后在下拉菜单中能看到咱们修改后的值浏览器

            

           3.选中修改后的值再点view,能够看到命令被执行,出现系统网络链接状况安全

          

          

Numeric SQL Injection

         1.构造一个永真式就完事了服务器

         

          

         

Log Spoofing

  1. 利用换行符伪造一个假的日志信息,在User Name文本框中输入xgh%0d%0aLogin Succeeded for username: admin,(%0d是回车,%0a是换行符)cookie

         

         2.如图所示,攻击成功

         

String SQL Injection

  1. 在文本框中输入' or 1=1 --

         

         2.Go,攻击成功,全部用户信息都被显示出来

         

LAB:SQL Injection(Stage 1:String SQL Injection)

  1. 以用户Neville登陆,在密码栏中输入'or 1=1--进行SQL注入成功

         

LAB:SQL Injection(Stage 3:Numeric SQL Injection)

  1. 以用户名Larry登陆,登陆以后看到浏览员工信息的按钮是ViewProfile

  2. 在网页代码中分析按钮,发现是以员工ID做为索引传递参数的,咱们要经过Larry来浏览老板帐户信息,通常来讲老板的工资都应该是最高的,因此把其中的value值改成101 or 1=1 order by salary desc --,老板的信息就会被排到第一个

2.实验问题

1)SQL注入攻击原理,如何防护

SQL注入,就是经过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

SQL注入攻击是黑客对数据库进行攻击的经常使用手段之一。

SQL注入攻击指的是就是经过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

防护:

1.永远不要信任用户的输入。对用户的输入进行校验,能够经过正则表达式,双"-"进行转换等。

2.永远不要使用动态拼装sql,可使用参数化的sql或者直接使用存储过程进行数据查询存取。

3.永远不要使用管理员权限的数据库链接,为每一个应用使用单独的权限有限的数据库链接。

4.不要把秘密信息直接存放,加密或者hash掉密码和敏感的信息。

2)XSS攻击的原理,如何防护

XSS攻击:跨站脚本攻击。

XSS是一种常常出如今web应用中的计算机安全漏洞,它容许恶意web用户将代码植入到提供给其它用户使用的页面中。好比这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略。

防护:

基于特征的防护:

传统XSS防护多采用特征匹配方式,在全部提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法通常会须要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。

基于代码修改的防护:

步骤一、对全部用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其余的一概过滤。

步骤二、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

步骤三、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤为是样式表和javascript),使用HTTP only的cookie。

3)CSRF攻击原理,如何防护

CSRF即跨站请求伪造。借用用户的身份,向web server发送请求,由于该请求不是用户本意,因此称为“跨站请求伪造”。

CSRF通常的攻击过程是,攻击者向目标网站注入一个恶意的CSRF攻击URL地址(跨站url),当(登陆)用户访问某特定网页时,若是用户点击了该URL,那么攻击就触发了。

防护

referer

由于伪造的请求通常是从第三方网站发起的,因此第一个防护方法就是判断 referer 头,若是不是来自本网站的请求,就断定为CSRF攻击。可是该方法只能防护跨站的csrf攻击,不能防护同站的csrf攻击(虽然同站的csrf更难)。

使用验证码

每个重要的post提交页面,使用一个验证码,由于第三方网站是没法得到验证码的。还有使用手机验证码,好比转帐是使用的手机验证码。

使用token

每个网页包含一个web server产生的token, 提交时,也将该token提交到服务器,服务器进行判断,若是token不对,就断定位CSRF攻击。

将敏感操做又get改成post,而后在表单中使用token. 尽可能使用post也有利于防护CSRF攻击。

 3.实验总结与体会

 还有15分钟就不能交做业了,因此就少作点。。。感受仍是挺好玩的,要是在ctf比赛前做就更好了。最后一次实验就结束了,终于不用写博客了O(∩_∩)O哈哈~

相关文章
相关标签/搜索