Burp没有自带检测XXE漏洞功能,也没有插件。于是自己开始动手撸一个XXE Scanner插件出来。
OOB XXE盲攻击,利用ceye监控的http记录,我们再通过ceye给的api进行查询是否有利用XXE漏洞发送的http请求记录。使用如下payload。
首先需要一个ceye账号,将Identifier(用于http请求到你的ceye账户下)
和Token(用于API查询你的http请求记录)
分别填入到下图的文本框当中,点击保存。会在burp目录下生成xxe.config,以Identifier|Token
格式保存着。下载启动burp的时候,XXE Scanner插件会自动读取xxe.config,获取到上次保存的参数。
请求带xxe_XXXXXXXXXX(10个随机字母或数字)
,用于后面判断是否利用XXE发送了http请求。
通过api查询,检测到带有xxe_XXXXXXXXXX(10个随机字母或数字)
的请求,则报XXE inject。
由于有需要填写配置参数,所以需要一个自定义tab页面。需要使用ITab
接口,并且使用IBurpExtenderCallbacks.addSuiteTab()
进行添加。新建XxeOption
类继承ITab
,然后再构造方法里面添加控件。
最后在registerExtenderCallbacks
方法里实例化XxeOption
即可。
IScannerCheck
可以自定义扫描,一种是doActiveScan
主动扫描,一种是doPassiveScan
被动扫描。主动扫描是对每个参数进行扫描,会发送n次请求包。而被动扫描只会扫一次,将doPassiveScan
函数代码走完一遍就完了。而检测XXE我们只需要发送一次数据包,所以选择被动扫描。
接下来就是发送xxe payload。使用buildHttpMessage
将headr和body组合。再使用makeHttpRequest
发送请求。
使用makeHttpRequest
进行api接口查询。
对返回结果进行匹配。
https://portswigger.net/burp/extender/api/
点击原文查看下载地址
* 本文作者lufei,转载注明来自FreeBuf.COM