wfuzz提权脚本

极客

wfuzz提权脚本:我用它从低权限一路摸到root,踩坑记录全分享

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

wfuzz提权脚本

先说说我为啥会盯上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提权脚本,欢迎在评论区跟我交流,我看到都会回的!记得点赞收藏,下次打靶机的时候翻出来看看,绝对能帮你省不少时间。

咱们下篇文章见啦,拜拜~

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]