wfuzz提权脚本:我用它从低权限一路摸到root,踩坑记录全分享
大家好呀,今天想跟你们聊聊一个我最近折腾得挺上头的东西——wfuzz提权脚本,说真的,之前我对wfuzz的印象一直停留在“Web目录爆破工具”这个层面,直到前段时间打靶机的时候,才发现这玩意儿配合提权脚本用起来是真的香,所以今天这篇文章,我就把自己踩过的坑、总结出来的经验,一股脑儿都写出来,希望能帮到正在研究提权的你。

先说说我为啥会盯上wfuzz提权脚本
事情是这样的,前阵子我在打一台Linux靶机,拿到了一个www-data的shell,权限低得可怜,啥都干不了,按照老套路,我上传了linpeas.sh跑了一遍,发现有个sudo配置有点意思,但手动一个个试太慢了,这时候我突然想到,能不能用wfuzz来批量跑提权脚本呢?毕竟wfuzz本身就支持自定义payload和fuzz点,稍微改改字典,不就能拿来当提权脚本的“调度器”用了嘛。
于是我就开始了我的wfuzz提权脚本折腾之路。
wfuzz提权脚本到底是个啥思路?
先给不太熟的朋友解释一下,wfuzz本身是个Python写的Web fuzzing工具,但它有个特别灵活的地方——-z参数可以指定payload类型,还能从文件里读字典,而所谓的“wfuzz提权脚本”,其实就是把提权命令、SUID枚举结果、sudo -l 的输出,甚至是一些内核漏洞编号,做成字典,然后让wfuzz去逐个fuzz执行。
听起来是不是有点绕?我举个我实际用的例子你就懂了。
我当时的场景是这样的:目标机器上有一堆SUID文件,我需要快速筛选出哪些能用来提权,手动一个个查GTFOBins太慢了,于是我把常见能提权的SUID程序名做成字典,然后写了个简单的wfuzz提权脚本框架:
wfuzz -z file,/tmp/suid_list.txt -H "Cmd: FUZZ" --script=/tmp/check_priv.sh
当然啦,实际用的时候肯定没这么简单,我还在脚本里加了回显判断,比如匹配到“root”字样就高亮输出,这样一来,几分钟就能把上百个SUID文件过一遍,效率直接起飞。
我踩过的那些坑,你们千万别再踩
字典不能乱写,得按场景分类
一开始我图省事,把所有提权命令都塞进一个字典里,结果跑出来一堆报错,后来我才明白,wfuzz提权脚本的字典得按场景分:SUID一个字典、sudo一个字典、cron一个字典、内核漏洞一个字典,这样跑的时候目标明确,误报也少。
回显过滤是关键
wfuzz默认输出一大堆,看得我眼睛都花了,后来我加了--filter参数,比如--filter "content~root",只显示包含root的结果,哇,那一刻世界都清净了。
别在真实环境乱跑
这个必须强调!wfuzz提权脚本在靶机上跑跑没问题,但真实环境里乱跑提权命令,分分钟触发EDR告警,我有个朋友就是不信邪,结果被甲方追着问了一星期,所以切记:授权测试,授权测试,授权测试!
我总结的一套wfuzz提权脚本模板
下面这个是我自己常用的模板,分享给你们:
#!/bin/bash
# wfuzz提权脚本 - by 我本人
# 用法:./wfuzz_priv.sh <目标URL> <字典文件>
TARGET=$1
DICT=$2
wfuzz -c -z file,$DICT \
--hc 404 \
--filter "content~root or content~uid=0" \
-H "User-Agent: Mozilla/5.0" \
$TARGET/FUZZ
当然这只是一个基础框架,实际用的时候还要根据目标环境调整,比如如果是本地提权,就把FUZZ换成命令执行点;如果是Web提权,就换成参数fuzz。
最后说几句掏心窝子的话
说实话,wfuzz提权脚本这东西不是万能的,它更像是一个“加速器”,帮你把重复性的提权尝试自动化,真正的核心还是你对目标环境的理解,以及对提权链路的敏感度,我见过太多人拿着工具一顿乱跑,结果啥也没挖到,就是因为没搞懂原理。
所以我的建议是:先把Linux提权的常见姿势(SUID、sudo、cron、capabilities、内核漏洞)都过一遍,再用wfuzz提权脚本去批量验证,这样效率最高,也不容易漏掉关键点。
好了,今天就聊到这儿,如果你也在研究wfuzz提权脚本,欢迎在评论区跟我交流,我看到都会回的!记得点赞收藏,下次打靶机的时候翻出来看看,绝对能帮你省不少时间。
咱们下篇文章见啦,拜拜~