前端Hack之XSS攻击个人学习笔记 (5)

       其中在ASCII表中116为t,58为:。
       也可以将&#01,&#02等插入javascript的头部,还可以将tab(&#09)|换行符(&#10)|回车键(&#13)插入到代码中的任意位置。

Fuzz标签未过滤事件名

       如<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:

<div> <style> body {background-image:url("javascript:alert('xss')");} </style>

       css中使用expression执行javascript:

<div> <img src="#"> <style> body {background-image:expression("alert('xss')");} </style>

       在上述的两个例子中,都用到了样式表的url属性来执行XSS代码。
       除了上述两种,还可以利用@import直接执行javascript代码

<style> @import 'javascript:alert("xss")'; </style>

       在现实环境下,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行代码

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzwjz.html