游客发表
wfuzz 这东西,破密用好了是破密利器,用不好就是破密给自己找不痛快。爆破密码这事儿,破密说白了就是破密拿字典去撞运气,但运气这东西,破密也得讲究个撞法。破密
我第一次用 wfuzz 的破密时候,傻乎乎地拿默认字典去怼一个后台。破密结果呢?破密跑了三个小时,啥也没出来。破密后来才明白,破密默认字典里全是破密“admin”、“123456”这种幼儿园级别的破密货色,稍微有点脑子的破密管理员都不会用。真正要爆破,得先摸清楚目标的路数。
比如你拿到一个登录接口,先别急着上 wfuzz。用 burp 抓个包,看看它提交的参数格式。有的系统会把用户名和密码放在一个 JSON 里,有的用 form 表单,还有的奇葩系统会把密码做一次 MD5 再传。这些细节不看清楚,你字典再大也是白搭。
wfuzz 的语法其实挺直白的。核心就是那个 -z 参数,指定字典,然后用 FUZZ 占位符告诉它往哪儿塞。比如:
wfuzz -z file,/path/to/passwords.txt -d "username=admin&password=FUZZ" http://target.com/login 这一行就能跑起来。但跑起来不等于能出结果。你得学会看 response。默认情况下,wfuzz 会显示状态码、字数、行数。如果某个密码返回的页面大小跟其他都不一样,那基本就是有戏了。别光盯着 200 看,有时候 302 跳转反而说明密码对了,因为它带着你去下一个页面。
这里头有个坑。有些系统会做防爆破处理,比如连续输错五次就锁定 IP。这时候你硬刚,只会把自己搞进黑名单。我一般会加个 -t 1 把线程降到最低,再配合 --delay 参数,每次请求间隔个几百毫秒。慢是慢了点,但至少不会被封。
还有更阴险的,有些系统会返回一个假的登录成功页面,专门用来骗爆破工具。你要是只看状态码,很容易被忽悠。这时候就得手动比对响应内容了。wfuzz 有个 --hc 参数可以隐藏特定状态码,还有个 --hh 可以隐藏特定字数的响应。用这两个参数把干扰项滤掉,剩下的才是真正值得关注的。
字典这东西,别老指望别人给的。我自己习惯用 crunch 生成一套针对目标的弱口令,再把网上流传的 top1000 给合并进去。比如目标是一家小公司,我就把公司名、地址、电话这些信息揉进去,组成类似 Company2023、Tel888888 这样的组合。这种针对性爆破,命中率比通用字典高得多。
说到这儿,得提一嘴 wfuzz 的过滤器。它的 --filter 参数能让你用表达式筛选结果。比如你想找出所有内容长度在 500 到 800 字节之间的响应,可以这么写:
wfuzz -z file,pass.txt -d "user=admin&pass=FUZZ" --filter "c=200 and l>500 and l<800" http://target.com/login 这个功能特别适合对付那些动态页面。有些系统每次刷新都会变一点内容长度,这时候光靠肉眼对比根本看不出来,用过滤器一筛就干净了。
最后提醒一句。wfuzz 爆破这事儿,技术含量不在工具本身,而在你对目标的理解深度。你花十分钟分析一下目标系统的架构、用的什么框架、默认密码规则是什么,比闷头跑十个小时字典有效得多。我见过太多人拿着 wfuzz 就瞎跑,跑不出结果还怪工具不行。工具就是一把锤子,你得先知道钉子在哪。
跑完记得清理日志。wfuzz 默认会在当前目录留下缓存文件,别给管理员留证据。反正我每次用完都会 rm -rf ~/.wfuzz,干净利落。这行当,细节决定你能不能全身而退。
友情链接