批量检测SQL注入

AlexFrankly 2018-1-12 教学频道 0 0

0×01 前言

SQL注入,这个类型的漏洞我真的学了好久好久好久好久,即是我刚刚开始接触安全就学习的第一种漏洞,也是一个迄今为止还在学习的漏洞类型,只能说,感觉自己还是有很多还是不会的。从一开始的手工一个网站一个网站去测,到之后的用google hacking的方法去找可疑链接,再到后面用sqlmap批量检测。也是经历了至少半年的时间。今天才写了个调用sqlmapapi的脚本,想跟大家分享一些走过的坑和思路。

0×02 SQL注入批量测试的几种方法

本文的目的在于通过看别人的代码来学习原理,同时也掌握自己造轮子的能力。这里只是列举了我自己平时用到的几种方法,当然网上能找到更多更好的工具,或者更好的思路,都是值得学习的。

下面就列举三种方法是:sqliv、sqlmap -m、sqlmapapi。

1.1  sqliv

1.1.1  下载地址:

【https://github.com/Hadesy2k/sqliv】

1.1.2  说明:

1.png

作者是Hadesy2k,可以看到作者大大更新还是挺勤快的,写这文章的日期是11月23日(文章第一版)(第二版已经是12月28日),从图里可以看出作者在月初的时候更新了一波。

而更之前在10月份的时候我看了一遍这个代码,发现作者在检测sql注入点的时候只是在参数值后加了个单引号,然后检测返回页面的报错信息。以这种方式去测试当然会遗漏很多呀。而且如果一个链接后跟多个参数,同时在所有参数值里加单引号。我头上直冒汗。

在【src/scanner.py】里可以看到这一句:

【website = domain + “?” + (“&”.join([param +payload for param in queries]))】

每个参数值加payload后组合一起,现在依然是这种方式。

在11月初更新一波后,可以看到payload不再是只有单引号了,还有了很多其它的如括号,分号等。

2.png

3.png

这个是lesson是没有注入的,参数内容改变的话会影响页面返回结果,所以正确的方法应该是单独给每个参数的内容加payload进行测试。

4.png

我自己改了下,变成分别单独测试所有参数值,有需要的话。大家可以去我的github【https://github.com/Martin2877/sqliv-M/blob/master/src/scanner.py】看。

5.png

值的高兴的是,作者把检测POST请求放在他的【To Do】里了,期待。

6.png

(而当我12月28号再去看的时候,作者又更新了许多,还加入了docker更方便部署。点个赞。)

7.png

1.1.3  多地址

因为sqliv本身是没有多地址批量的,所以我们自己写一个咯,还是比较简单的,见下图,代码也在我的github里

8.png

1.2  sqlmap -m

1.2.1  下载地址:

【https://github.com/sqlmapproject/sqlmap】

1.2.2 说明:

神器sqlmap,不多说,-m模式,就是用来批量测试url的,不过是单线程,比较慢,效果比sqlmapapi好。

使用命令:

python sqlmap.py -m urls.txt --batch

9.png

1.3  sqlmapapi

1.3.1  下载地址:

【https://github.com/Martin2877/sqlmapapi-M】

1.3.2  说明:

api模式有多线程,先通过sqlmap根目录中的sqlmapapi.py启动服务:

【python sqlmapapi.py -s】

10.png

然后到sqlmapapi-M根目录下,在【url.txt】中写你要批量测试的地址:

11.png

然后使用命令执行批量扫描:【python sqlmapbatch.py】

12.png

效果如图,而其关键代码如下:

13.png

这里设置了超时时间是4秒,然后测下一个,大家也可以设置更久一点,效果也会更好。我这里没有做队列什么的,大家可以自己改哈。

0×03 爬取链接

当然上面几种方法都需要用到url.txt,针对这个我另外写了一个爬虫工具,见【https://github.com/Martin2877/FindLinks】,是爬取一个网站下链接的工具;网上还有很多能通过搜索找可能有sql注入的网站,这里就不多描述啦。

0×04 总结

总结一下,上面所列的几个工具或方法效果最好的当然是【sqlmap -m】,因为没有“超时”,一个地址会一直测到完为止,所以测的时间真的很久,测一天的话也就只能有500个地址吧。而这里slqmapapi因为设置了超时,所以会快很多,不过效果没有那么好。以后加了队列应该就能顾及两个方面的问题。而sqliv相对来说比较快,因为只是加payload看返回是否有数据库报错(也是其缺点),当然可以改代码变成加载payload字典的方式去测,也算是不错的一个工具。

以上,就是这么多啦,祝愿大家能更快更多地挖出sql注入哦~

*本文作者:muhe,转载请注明来自FreeBuf.COM

转载请注明来自华盟网,本文标题:《批量检测SQL注入》

喜欢 (0) 发布评论