搜索
查看: 5249|回复: 0

xssfork - 新一代 xss 探测工具

[复制链接]

330

主题

177

回帖

1071

积分

vip用户

积分
1071

注册会员活跃会员热心会员

QQ
发表于 2018-10-17 14:25:30 | 显示全部楼层 |阅读模式
xssfork简介
xssfork 作为 sicklescan 的一个功能模块,其开发主要目的是用于检测 xss 漏洞。
传统的 xss 探测工具,一般都是采用 payload in response 的方式,即在发送一次带有 payload 的 http 请求后,通过检测响应包中 payload 的完整性来判断,这种方式缺陷,很多。
第一:不能准确地检测 dom 类 xss
第二:用类似于 requests 之类的库不能真正的模拟浏览器
第三:网页 js 无法交互
怎么解决?如果能够用浏览器代替这个模块,去自动hook是最好的。所幸,我了解到 phantomjs,当然现在 google 浏览器也支持 headless 模式,类似的,你也可以采用 google 浏览器去做检测。
原理
对于这类 fuzz 过程,基本都是预先准备好一些 payload,然后加载执行。对于这类 io 型密集的扫描模型,后端使用多线程就比较适用,但是由于 phantomjs 你可以理解为一个无界面的浏览器,在加载的时候,其缺陷也比较明显,比较吃内存,用它来发包自然不像 requests 库轻量。
编码脚本
由于基础的 payload 模块,我收集了71个。
1.png
除了这些基础的 payload,xssfork 还提供了几个编码脚本,查看脚本,可以看 help
3.png
现阶段提供了10进制,16进制,随机大小写,关键字叠加四个脚本。
10hex_encode
将 html 标签内部字符10进制化


[pre]
<a href=&#x6a&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3a&#x61&#x6c&#x65&#x72&#x74&#x28&#x36&#x35&#x35&#x33&#x34&#x29&#x3b>aaa</a>

[/pre]

4.png

16hex_encode
将 html 标签内部字符16进制化

uppercase
随机大小写将 <script>alert(65534);</script> 转换成 <ScRIPt>alert(65534);</ScRIpT>

addkeywords
主要是应对过滤为 replace('keyword>s','') 的情况,<script>alert(65534);</script> 变成 <<script>script>alert(65534);</script>当然默认开启的是轻量模式,即只返回一个payload,开启重量模式,可以生成更加丰富的pyaload,效果如下
[pre]
<script>alert(65534);</script>  
<script>alert(65534);</ScrIpt>  
<ScrIpt>alert(65534);</sCrIpt>  
<scRiPt>alert(65534);</script>  
<ScrIpt>alert(65534);</script>
[/pre]
演示
---xss.gif
场景2.大小写绕过
-----1-xss.gif
场景1.反射型xss
有没有参加CTF比赛的,一起组队啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表