重构sqlmap4burp插件
其实联动sqlmap与burp的插件挺多的,有gson,CO2,sqli-py等等。但我独爱sqlmap4burp,因为它使用超简单。原来在Windows下体验还是很ok的,自从换上mac之后就不好使了。
sqlmap4burp
项目作者已经很久没有维护了,于是打算对其进行重构。新插件就叫sqlmap4burp++
,表示感谢原作者的思路。sqlmap4burp++
将兼容更多操作系统
,操作更加简单
,界面更加简洁
!
0x01 重构之路
下面简单记录下重构做的一些小工作。
1.1 去除多余依赖
原插件依赖commons-io-<version>.jar
,commons-langs-<version>.jar
这两个jar。但查看代码只是为了可以使用FileUtils.writeByteArrayToFile()
和StringUtils.isNoneBlank()
两个方法。sqlmap4burp++
使用原生Java代码实现,让插件更轻量易编译。
1.2 去除JTab控件
现在的Burp插件很丰富,Burp suite JTab控件太多界面会显得特别臃肿。
考虑了下该插件并非特别需要JTab面板来添加sqlmap的配置命令,于是去除JTab控件该换成如下的弹窗。
1.3 多系统支持
插件会自动将Burp的request数据包保存为xxx.req
到java临时目录,而多系统支持无非就是在目标系统下,能弹出命令行窗口并执行我们的sqlmap -r xxx.req
命令,但各个系统实现的方式都有所不同!
1.3.1 Windows
Windows实现比较简单,只需要将sqlmap命令保存为bat脚本(sqlmap4burp.bat),然后执行以下命令:
1 | cmd.exe /c start sqlmap4burp.bat |
实现代码如下:
1 | String command = "sqlmap.py -r xxxxx.req"; |
1.3.2 Mac OS X
Mac下我们可以编写如下osascript
脚本来调用Terminal并让它执行sqlmap命令。
1 | tell application "Terminal" |
实现代码如下:
1 | String command = "sqlmap.py -r xxxxx.req"; |
这里需要注意两点:
- 第一次运行,mac会提示是否允许外部程序执行osscript,记得允许!
- 有时莫名其妙调用osascript不成功,我们需要确保Terminal是运行状态,如果已经是运行状态,可以重启下。
1.3.3 Linux
Linux下想实现弹出命令行窗口同时执行命令,我尝试了很多方法,但是都没有成功的。比较接近想要效果的方法是先将sqlmap命令写到shell脚本中(sqlmap4burp.sh
)。然后执行如下命令来运行sqlmap4burp.sh
:
1 | gnome-terminal -t "sqlmap4burp" -x bash -c "sh ./tmp/sqlmap4burp.sh;exec bash;" |
但使用代码去执行的时候并没有弹出Terminal
。大家如果有解决方法,可以Fork sqlmap4burp++项目贡献代码,或者发送想法到我的邮箱root#gv7.me。
目前采用临时的方法:先弹出Terminal
窗口,然后将生成好的sqlmap命令复制剪贴板,最后手工在弹出的窗口中粘贴并执行。
1 | String command = "sqlmap.py -r xxxxx.req"; |
完整代码请移步项目地址:https://github.com/c0ny1/sqlmap4burp-plus-plus
0x02 插件演示
插件已经在如下系统测试成功:
- Windows:7,10
- Mac OSX:Mojave 10.14.5
- Linux:Kali2019.2
请FQ观看演示,或者直接访问:https://www.youtube.com/watch?v=1RWVkztssvw