(只发技术贴) 入侵之前的准备—【如何抓取页面中可能存在 SQL 注入的链接】

这一篇我们讲一讲目标靶站进攻前的一些基础的知识和顺序。

首先自动化寻找网站的注入漏洞,需要先将目标网站的所有带参数的 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

1c00fd63b8b03726a6ba440aef3ffa42

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

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

086df86e73834a1079c59da59f2cc137

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

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

6467669f85faaaf933a60eb165c31e83

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

__________________________________________________________________________

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

1

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

2

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

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

我是老妖怪,欢迎讨论。

请登录后发表评论