105

批量检测SQL注入

 6 years ago
source link: http://www.freebuf.com/articles/web/159264.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
批量检测SQL注入
muhe 2018-01-11 13:00:12 1417750 19

0x01 前言

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

0x02 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秒,然后测下一个,大家也可以设置更久一点,效果也会更好。我这里没有做队列什么的,大家可以自己改哈。

0x03 爬取链接

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

0x04 总结

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

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

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

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

# SQL注入 # SqlMap # sqlmapapi # SQLiv # 批量检测

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK