如何抓取页面中可能存在 SQL 注入的链接

December 09, 2023
测试
测试
测试
测试
3 分钟阅读

自动化寻找网站的注入漏洞,需要先将目标网站的所有带参数的 URL 提取出来,然后针对每个参数进行测试,对于批量化检测的目标,首先要提取大量网站带参数的 URL,针对 GET 请求的链接是可以通过自动化获取的,而 POST 型参数提交的方式,则需要手工点击,然后代理抓取数据包再进行提交测试。

本文的重点是如何自动化获取网页中的 URL,然后进行处理后,保留每个路径下的一条记录,从而减少测试的目标,提升测试的效率,这个过程主要分三步,分别是:提取 URL、匹配带参数的 URL、URL 去重。

0x01 获取页面中的 URL

其实实现这个目标很简单,写一个脚本,获取页面内容,然后使用正则将 URL 匹配出来即可,有的人就会说,我不会写脚本,我不懂正则,该怎么办?

也好办,可以用别人写好的工具,会用就行,这里推荐一个工具叫 gau,项目地址:

https://github.com/lc/gau

该项目使用 go 语言编写,安装方式也很简单,命令如下:

go get -u -v github.com/lc/gau

使用起来就更简单了,比如:

echo "https://www.xazlsec.com" | gau

从图中可以看到有很多图片之类的文件,可以使用 -b 参数排除,比如:

echo "https://www.xazlsec.com" | gau -b png,jpg

如果我想获取的不只是目标域名下的链接,还想获取其他子域名的链接,那么可以使用 -subs 参数:

echo "https://www.xazlsec.com" | gau -b png,jpg -subs xazlsec.com

到这里,基本可以满足我们的需求了,当然还可以设置线程数来提升抓取效率,还可以将结果保存到文件中,具体的参数,大家可以自行测试。

0x02 提取 URL 中带参数的 URL

如果 URL 不带参数,那么我们就无法对其进行检测,任何输入点都有可能存在安全风险,没有输入点,当然也没办法测试了,所以如何从 URL 列表中提取带参数的 URL 呢?如果你会正则,会脚本,这个目标也没什么难度。

在不会写脚本,也不懂正则的情况下,可以使用工具 gf,项目地址:

https://github.com/tomnomnom/gf

安装也比较简单,使用的话需要依赖别人写好的配置文件,这里推荐一个项目,有很多写好的配置:

https://github.com/1ndianl33t/Gf-Patterns

首先安装 gf:

go get -u github.com/tomnomnom/gf

然后把 Gf-Patterns 克隆回来:

git clone https://github.com/1ndianl33t/Gf-Patterns

把 Gf-Patterns 中的文件移动到 .gf/ 中:

mv Gf-Patterns/* .gf/

接下来就可以提取可能存在 SQL 注入的链接了,结合之前介绍的工具,命令如下:

echo "https://example.com" | gau -b png,jpg -subs example.com | gf sqli

0x03 将提取出来的 URL 去重

通过以上方法获取的 URL 列表,有很多同一个路径,但是参数内容不同的情况,如果都去做测试的话,会有很多重复的劳动,没有必要的测试,所以需要将 URL 进行去重,将 URL 的参数替换为固定值,然后进行去重,这样就可以把相同路径和相同参数的 URL 去除,保留一条记录,可以大大的节省测试的时间和目标数量,即减少了与目标交互的次数,也能提升测试的效率。

这里推荐一个工具叫 qsreplace,下载地址:

https://github.com/tomnomnom/qsreplace

安装方式:

go get -u github.com/tomnomnom/qsreplace

结合之前的工具使用,命令如下:

echo "https://example.com" | gau -b png,jpg -subs example.com > sqli.txt cat sqli.txt | qsreplace fuzz > duplicateremove.txt

到这里,就可以使用注入漏洞检测工具对目标 URL 列表进行检测了,比如 sqlmap 等注入检测工具。

总结

本文主要介绍了三款 go 语言编写的小工具,用来针对目标收集可能存在某些漏洞的 URL 列表,然后在结合漏洞检测工具,有针对性的进行检测,提升工作效率。大家如果有更好的玩法,欢迎讨论。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多