导语:跨站请求漏洞是web漏洞中最普遍的漏洞,在特定的场景下可以造成很严重的破坏。可以让攻击者在受害者浏览器上执行一个恶意脚本,网络上关于这方面的文章已经很多了。

跨站请求漏洞是web漏洞中最普遍的漏洞,在特定的场景下可以造成很严重的破坏。可以让攻击者在受害者浏览器上执行一个恶意脚本,网络上关于这方面的文章已经很多了。

危害

想象下,如果我们能够在图片里直接插入JS脚本,并且在访问图片的时候能够触发这个脚本。那么我们就可以在网站文章下面的留言中上传图片,让用户不知不觉中招。

生成图片

首先,以下脚本是一个向gif文件中注入JavaScript的脚本:

http://pastebin.com/6yUbfGX5

还有这个,是向bmp中注入的:

http://pastebin.com/04y7ee3u

两个都是用python写的,其中,我们注意到他们的重点是:

以下是对GIF的头部进行的处理:

1486716939678821.png

用Hexadecimal打开,可以看到元数据GIF89a。

图片2.png

此外就是注入的内容:

图片3.png

演示过程

把脚本放到kali下执行

图片4.png

接下来,我们运行如下命令,将语句注入到图片中。以下是一个弹窗语句,在实际应用中,语句就很可能变成直接盗取cookie

图片5.png

好了,现在在html页面中直接加载图片,看xss是否可以被执行:

图片6.png

开启网站服务,apache2

图片7.png

访问页面,发现js脚本成功被执行:

图片8.png

我们可以把语句改成以下,就能重定向了:

图片9.png

也有用C或者ASM做的工具:

https://github.com/jklmnn/imagejs

https://gist.github.com/ajinabraham/f2a057fb1930f94886a3

如何防范

防御这类漏洞是很难的,不过有以下几点建议可以参考:

过滤用户输入内容
用白名单的方式限制元素的加载,及时是来自同一个域
用一些高级的开发模型例如MVC, PEAR, SRUTS…
使用令牌系统

总结

XSS漏洞存在于互联网的各个角落,千万不能忽视他的存在。开发的过程中一定要记得过滤用户输入。

源链接

Hacking more

...