安全矩阵

 找回密码
 立即注册
搜索
查看: 2426|回复: 0

针对一些简单场景的模糊测试

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-6-19 09:13:15 | 显示全部楼层 |阅读模式
原文链接:针对一些简单场景的模糊测试
​WFuzz 是开源的一款针对 web 应用模糊测试的开源软件,使用 Python 编写,测试的漏洞类型主要包括:未授权访问、注入漏洞(目录遍历、SQL 注入、XSS、XXE)、暴力破解登录口令 等。项目地址:
https://github.com/xmendez/wfuzz
使用文档:
http://wfuzz.readthedocs.io/
所需 Python 环境 Python 3.4+,安装方式:
pip install wfuzz
或者:
git clone git://github.com/xmendez/wfuzz.git && python setup.py install
安装完成之后,查看界面:

接下来用 DVWA 靶场作为目标进行工具测试,靶场地址:
http://vul.xazlsec.com:8080/login.php
首先看到的是一个登录框,在我们不知道账号密码的情况下,如何 fuzz 出账号密码呢?
绕过 CSRF Token 继续爆破我们可以使用 BurpSuite 看一下登录的数据包:

我们看到除了账号密码之外,还有一个 user_token 的参数,这个是为了防止暴力破解而设置的 CSRF Token,每次打开页面都会生成一个新的 token,所以每次暴力破解的请求都需要将新的 token 获取到,然后填入参数中,所以需要增加一步操作,对于 wfuzz 而言,貌似没有这个绕过 csrf 爆破的功能,我们可以使用 Burp 的一个插件 CSRF Token Tracker,前往 burp 的扩展商店搜索 csrf 即可:

使用也比较简单,安装完成之后,会在菜单栏出现一个 CSRF Token Tracker 的菜单,点进去之后,按下图配置:

注意需要填写主机名和要替换的参数名,在 DVWA 登录中使用的参数名为 user_token,这样就可以使用 Repeater 或者 Intruder 对其进行登录破解尝试了,检测测试一下,由于登录成功失败返回的信息都一样,所以无法从数据包的角度判断是否破解成功,但是在破解完成之后,刷新页面会有提示:

好像走偏了,由于 dvwa 是个漏洞平台,所以如果有人登录进去,那么服务器就会很危险,所以登录时使用 csrf tokne 来防御暴力破解,虽然可以绕过,但是增加了难度,接下来使用 wfuzz 来测试一下,看看其能力如何。
利用 WFuzz 的测试场景针对登录功能的暴力破解
其实暴力破解的工具有很多,Burp 也能满足要求,本次主题主要目的是测试 WFuzz 的功能,所以使用 WFuzz 来进行暴力破解,DVWA 专门有一个暴力破解的练习模块:
http://vul.xazlsec.com:8080/vulnerabilities/brute/

随便输入账号密码 admin/admin 来抓取数据包看看:

看请求是通过 GET 请求将用户名和密码作为参数进行验证,由于访问 DVWA 的漏洞页面需要认证,所以需要指定 Cookie,然后尝试使用下面的命令对密码进行 FUZZ:
wfuzz -c -w pass.txt -u "http://vul.xazlsec.com:8080/vulnerabilities/brute/?username=admin&password=FUZZ&Login=Login" -b "PHPSESSID=isaaiqpa5i849bd933l9jlv3ot; security=low"
Fuzz 的结果如图:

从图中可以看到第一行,密码为 password 时,Word 和 Chars 与其他不一样,说明,这个密码可能是正确的,然后用这个密码去测试即可。
针对参数进行 SQL 注入检测
在使用之前需要准备一些 SQL 注入检测的 Payload,还是使用 DVWA 来作为目标:
http://vul.xazlsec.com:8080/vulnerabilities/sqli/
在输入框随便填入一个数字,提交之后,获取数据包:

针对参数中的 id 进行 Fuzz,命令如下:
wfuzz -z file,SQL.txt -u "http://vul.xazlsec.com:8080/vulnerabilities/sqli/?id=FUZZ&Submit=Submit" -b "PHPSESSID=isaaiqpa5i849bd933l9jlv3ot; security=low"
Fuzz 结果如下:

结果中有一些 payload 获得的返回包不太一样,可以猜测其存在安全风险,其实 Fuzz 的过程就是触发异常,然后针对异常进行深入测试。
枚举未知参数
这个场景是当我们想发现一些隐藏参数的时候,可以用字典的方式来枚举参数名,比如我们不知道查询用户信息的参数是 id,我们可以用下面的命令来枚举参数名,准备一个参数名的字典 parameter.txt:
wfuzz -z file,parameter.txt -u "http://vul.xazlsec.com:8080/vulnerabilities/sqli/?FUZZ=1&Submit=Submit" -b "PHPSESSID=j1r5qt89fkjii8dmemc0vdh1td; security=low"
FUZZ 结果如下:

从图中可以看到,只有 id的返回结果与其他的不同,所以很大可能这个参数名为 id,这个场景经常用于一些伪静态的网站,用这种方式来还原 URL,方便测试。
总结本文总结了一部分 WFuzz 的功能,用到的参数比较简单,主要是 -d 指定 POST 数据,-b指定 Cookie 值,-w指定字典文件路径,相同的功能,使用 -z file,payload.txt 的方式指定 payload 文件,其他参数的用法留给大家自行挖掘,如果你有更好的使用 WFuzz 的场景,欢迎留言讨论。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 07:34 , Processed in 0.012786 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表