首页 > 代码库 > 前端之困 · XSS CookBook

前端之困 · XSS CookBook

方法论

发掘漏洞的时间要具体到是检测什么目标了,找 Google 的,和找腾讯的时间肯定不会一样。 至于是如何发现的,不同类型的 XSS 漏洞,可能不尽相同。

  1. 反射型 以及一些 DOM 型,一般建议是开发一些自动化的扫描工具进行扫描,并辅以手工分析。 另外一方面,搜索引擎也是快速寻找具有缺陷参数的好办法。 如何进行具体分析,Cookbook 中会讲到 ,虽然不尽全面,但是灵活运用,应能直面惨淡的人生。
  2. 存储型
    1. 单纯的输入->存储->输出点 的情况 (输入与输出点关系:一个地方输入,会有多个地方输出;不同地方输入,同一地方输出。绕了点 T T …)。常规测试是正向直接输入内容,然后在输出点查看是否未过滤,当然你也可以先大胆假设输出点未过滤,反向寻找在何处进行输入,进而测试。
    2. 富文本,则需要对过滤器进行fuzz测试(人脑+自动化)了,正好乌云drops上有乌乌发了一篇:fuzzing XSS filter。
    3. 第三类,就是一些WEB应用中所出现的 DOM-存储型 XSS,即输出点的无害内容,会经过 JS 的一些 dom 操作变得危险(本质上和 第 1 点里的 DOM XSS 成因是一样的)。这一类的挖掘方法,个人觉得不太好总结。
      1. 需要熟悉WEB应用的功能。
      2. 知道功能所对应的 JS 代码有哪些。
      3. 凭直觉猜测程序员会在哪些功能出现可能导致 XSS 的过滤遗忘或过滤错误(直觉是唬人的,其实就是你知道某些功能会需要某些代码实现,而这些代码常常容易出错)。
      4. 需要有较好的代码阅读跟踪能力(JS 还是比较难读的,有些代码被混淆过,十分不易阅读,就会涉及到如何下断点进行调试的小技巧)。 我想,挖掘这一类的前提可能是需要有不错的前端开发经验,写多了,才会有足够的嗅觉。

其实有时候专门去找漏洞会很累的,大什么怡情,小什么伤身,因此,我们还不如开心的敲敲代码,听听歌,静待生命中那些意外的收获。 这些收获经常来自身边的人发给你的一些事物。

Cookbook

  1. 什么都没过滤的入门情况
  2. 输出在<script></script>之间的情况
  3. 输出在HTML属性里的情况
  4. 宽字节复仇记 [QQ邮箱基本通用]
  5. 反斜线复仇记
  6. 换行符复仇记
  7. 宽字节、反斜线与换行符一起复仇记
  8. Dom Xss入门 [显式输出]
  9. Dom Xss入门 [隐式输出]
  10. Dom Xss进阶 [邂逅eval]
  11. Dom Xss进阶 [善变iframe]
  12. Dom Xss进阶 [路径con]
  13. Dom Xss实例 [Discuz X2.5]
  14. Flash Xss入门 [navigateToURL]
  15. Flash Xss进阶 [ExternalInterface.call第一个参数]
  16. Flash Xss进阶 [ExternalInterface.call第二个参数]
  17. XSS过滤器绕过 [通用绕过]
  18. XSS过滤器绕过 [猥琐绕过]
  19. 存储型XSS入门 [什么都没过滤的情况]
  20. 存储型XSS入门 [套现绕过富文本]
  21. 存储型XSS进阶 [猜测规则,利用Flash addCallback构造XSS]

 

工具

  • Chrome 开发者工具(F12)
  • Charles
  • JPEXS Flash Decompiler

来自知乎:http://zhuanlan.zhihu.com/wooyun/19756127

前端之困 · XSS CookBook