其中在ASCII表中116为t,58为:。
也可以将,等插入javascript的头部,还可以将tab(	)|换行符(
)|回车键(
)插入到代码中的任意位置。
如<img src=http://www.likecs.com/x onerror=alert(/xss/)>其中的onerror即为IMG标签的一个事件,通常这样的事件都是以on开头,常见的有:
onResume onReverse onSeek onSynchRestored onURLFlip onRepeat onPause onstop onmouseover除此之外还有很多事件可以利用,这里不再一一列举。
使用Css绕过 利用Css样式表可以执行javascript的特性,如
Css直接执行javascript:
css中使用expression执行javascript:
<div> <img src="#"> <style> body {background-image:expression("alert('xss')");} </style> 在上述的两个例子中,都用到了样式表的url属性来执行XSS代码。
除了上述两种,还可以利用@import直接执行javascript代码
在现实环境下,HTML页面中的Css与Javascript的嵌入方式很相似,且Css也可以执行javascript代码,故我们的XSS代码也可以通过嵌入远程恶意css文件来进行XSS攻击。
扰乱规则大小写变换;
利用expression执行跨站代码的时候,可以构造不同的全角字符来扰乱过滤规则;
结合样式表注释字符/**/,通过css执行javascript
样式标签会过滤\和\0,可以构造如@i\mp\0\0ort 'jav\0asc\0rip\t:al\0er\t("x\0ss")'绕过
Css关键字进行编码处理,如<p>其中65为字母e进行unicode编码后的数字部分
利用浏览器解析注释的问题
利用字符编码javascript支持许多的编码格式,如:
unicode
escapes
十六|十|八进制
如果能将这些编码格式运用进跨站攻击,无意能大大加强XSS的威力
在IE下甚至支持JScript Encode加密后的代码
如果一个网站规定了输入的最大长度,但是ShellCode又太长,那么久可以拆分成几个部分,最后在组成起来。相关文章:《疯狂的跨站之行》剑心(非原链接)
7) XSS防御说了那么多,那我们该如何防御这看似防不胜防的XSS攻击呢?
输入严格控制用户可输入的范围,如手机号只能输入数字且长度不能大于11位等,如需输入某些敏感字符的情况下可对数据进行转义处理,对于用户数据的过滤尽可能地采用白名单而不是黑名单。
输出减少不必要的输出,在需要输出的地方使用HTML编码将敏感字符转义为实体符,javascript进行DOM操作时注意不要将已转义的实体符再次解析成DOM对象。
其他设置HttpOnly,开启WAF。
写在最后感谢参考资料中各位分享技术的大牛,小弟才笔有限,仅仅介绍了XSS攻击中的一部分,仍有一部分由于种种原因我没有写进来。比如整篇文章都是Javascript,实际上在遇到XSS问题时我们还需考虑VBscript、Actionscript等等,还有许多优秀的案例由于篇幅问题无法写上了,可能会导致部分读者理解不全面,在这里向大家说声抱歉,我会在下面的参考中列出我参考的书籍与文章供各位读者查看。XSS的学习暂时放下了,下一站——SQL注入,虽然对此有些浅显的认知,但还是希望能系统的学一遍,可能会在下个月发出来,感兴趣的读者可以关注我的博客。
参考资料
书籍:
《Web前端黑客技术揭秘》
《XSS跨站脚本攻击剖析与防御》
《白帽子讲Web安全》
《黑客攻防技术宝典Web实战篇》第二版
文章:
XSS小结
浅说 XSS 和 CSRF
Session攻击手段(会话劫持/固定)及其安全防御措施
https://github.com/ChrisLinn/greyhame-2017/blob/master/skills/web.md 2017灰袍技能精华
https://github.com/rajeshmajumdar/BruteXSS BruteXSS
https://github.com/beefproject/beef Beef神器
https://github.com/1N3/XSSTracer 用于检查跨站点跟踪的小型python脚本
https://github.com/0x584A/fuzzXssPHP 一个非常简单的反射XSS扫描仪支持GET/POST
https://github.com/chuhades/xss_scan 反射xss扫描器
https://github.com/BlackHole1/autoFindXssAndCsrf 浏览器的插件,它自动检查页面是否具有xss和漏洞
https://github.com/shogunlab/shuriken xss命令行工具用于测试web应用程序中xss负载列表
https://github.com/UltimateHackers/XSStrike 用于XSS、WAF检测和旁路的模糊和蛮力参数
https://github.com/stamparm/DSXS 一个完全功能的跨站点脚本漏洞扫描器,支持获取和发布参数,并写入100行代码