导语:跨站请求漏洞是web漏洞中最普遍的漏洞,在特定的场景下可以造成很严重的破坏。可以让攻击者在受害者浏览器上执行一个恶意脚本,网络上关于这方面的文章已经很多了。
跨站请求漏洞是web漏洞中最普遍的漏洞,在特定的场景下可以造成很严重的破坏。可以让攻击者在受害者浏览器上执行一个恶意脚本,网络上关于这方面的文章已经很多了。
危害
想象下,如果我们能够在图片里直接插入JS脚本,并且在访问图片的时候能够触发这个脚本。那么我们就可以在网站文章下面的留言中上传图片,让用户不知不觉中招。
生成图片
首先,以下脚本是一个向gif文件中注入JavaScript的脚本:
还有这个,是向bmp中注入的:
两个都是用python写的,其中,我们注意到他们的重点是:
以下是对GIF的头部进行的处理:
用Hexadecimal打开,可以看到元数据GIF89a。
此外就是注入的内容:
演示过程
把脚本放到kali下执行
接下来,我们运行如下命令,将语句注入到图片中。以下是一个弹窗语句,在实际应用中,语句就很可能变成直接盗取cookie
好了,现在在html页面中直接加载图片,看xss是否可以被执行:
开启网站服务,apache2
访问页面,发现js脚本成功被执行:
我们可以把语句改成以下,就能重定向了:
也有用C或者ASM做的工具:
https://github.com/jklmnn/imagejs
https://gist.github.com/ajinabraham/f2a057fb1930f94886a3
如何防范
防御这类漏洞是很难的,不过有以下几点建议可以参考:
过滤用户输入内容 用白名单的方式限制元素的加载,及时是来自同一个域 用一些高级的开发模型例如MVC, PEAR, SRUTS… 使用令牌系统
总结
XSS漏洞存在于互联网的各个角落,千万不能忽视他的存在。开发的过程中一定要记得过滤用户输入。