尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

SUID3NUM源码解析:一个700行Python脚本如何实现SUID自动提权

SUID3NUM源码解析:一个700行Python脚本如何实现SUID自动提权 SUID3NUM源码解析一个700行Python脚本如何实现SUID自动提权【免费下载链接】SUID3NUMA standalone python script which utilizes pythons built-in modules to enumerate SUID binaries, separate default binaries from custom binaries, cross-match those with bins in GTFO Bins repository auto-exploit those, all with colors! ( ͡~ ͜ʖ ͡°)项目地址: https://gitcode.com/gh_mirrors/su/SUID3NUMSUID3NUM 是一款独立运行的 SUID 提权枚举 Python 脚本它只用标准库就能全盘找出 SUID 二进制区分系统与自定义程序自动比对 GTFO Bins 已知可利用清单并一键输出甚至执行提权命令。今天我们来拆解这个 791 行单文件脚本的完整设计思路看看它如何把SUID 自动提权做成一条流水线。为什么需要 SUID3NUM告别撞墙式提权先说背景Linux 上带有 SUID 位SetUID权限 4000的程序运行时会以文件所有者通常是 root的身份执行。如果某个可提权的 SUID 程序被误配或版本有洞它就是普通用户拿 root 的捷径。但传统枚举脚本如 LinEnum只会把所有 SUID 程序打印出来不做任何区分。结果就是❌ 一屏全是su、sudo、mount这类本来就有 SUID、且不可利用的系统自带程序❌ 新手对着清单研究 3~4 小时最后发现没有可打的目标❌ 真正有意思的自定义 SUID 程序淹没在噪音里SUID3NUM 要解决的就是这个问题自动过滤噪音、高亮可打目标、直接给出提权命令甚至替你执行-e参数。快速上手SUID3NUM 一键安装与运行只需三步即可跑起来git clone https://gitcode.com/gh_mirrors/su/SUID3NUM cd SUID3NUM python suid3num.py 该脚本兼容 Python 2.5~3.7无需安装任何第三方依赖全部基于内置模块sys、os、time克隆下来就能用。两种运行模式模式命令行为枚举模式python suid3num.py仅列出 SUID 程序并打印提权命令供手动执行自动提权模式python suid3num.py -e自动执行所有无副作用的 SUID 提权命令 ⚡⚠️ 官方在README.md中特别提示如果你不确定-e会做什么不要带-e参数运行先看懂再执行。源码结构791 行单文件五张知识表整个项目只有一个核心代码文件 suid3num.py另有 output.matlab 保存了作者的完整运行样例。打开源码会发现一个关键设计前 596 行几乎全是数据后 200 行才是逻辑。这些数据结构就是脚本的知识库数据结构所在行作用customSUIDs12~206 行约 190 个自定义 SUID 程序的完整利用命令库defSUIDBinaries209~258 行Linux 系统自带、不可利用的 SUID 黑名单su、sudo、mount…suidExploitation262~328 行可安全自动执行的提权命令字典如bash→-pgtfoBinsSuidsList332~546 行GTFO Bins 中完整 SUID 可利用的程序清单gtfoBinsLimitedSuidsList549~596 行GTFO Bins 中 Limited SUID受限提权清单这种数据与逻辑分离的写法是它最值得学习的地方新增可利用程序 往字典里加一行不用改任何逻辑代码五张表分工明确黑名单负责降噪清单负责命中判定两个命令字典负责给答案核心流程拆解四步流水线main()函数772 行起把整个流程串成四步非常清晰。第 1 步全盘扫描 SUID 程序核心逻辑在list_all_suid_binaries()620~635 行真正干活的只是一条 shellfind / -perm -4000 -type f 2/dev/null-perm -4000筛选设置了 SUID 位的文件-type f只要普通文件排除目录等2/dev/null丢弃无权限目录的报错噪音脚本通过os.popen执行这条命令把结果按行切分成列表返回——几十行的枚举脚本核心命令其实只有一行。第 2 步三分类——黑名单过滤 GTFO 比对check_suids_in_gtfo()638~728 行是整个脚本的灵魂逻辑浓缩成一句话取文件名的最后一段先查黑名单再查 GTFO 清单输出三个结果。bin_name bins.split(/)[::-1][0] # 取路径最后一段作为程序名 if bin_name not in defSUIDBinaries: custom_suid_bins.append(bins) # ① 非系统自带 → 自定义 SUID重点目标 if bin_name in gtfoBinsSuidsList or bin_name in gtfoBinsLimitedSuidsList: bins_in_gtfo.append(bins) # ② 命中 GTFO Bins → 可直接提权 else: default_suid_bins.append(bins) # ③ 系统自带 → 直接跳过输出时分三段彩色打印一眼分清轻重缓急Default Binaries (Dont bother)系统自带别浪费时间Custom SUID Binaries (Interesting Stuff)自定义程序值得研究SUID Binaries in GTFO bins list (Hell Yeah!)命中已知利用库附上 GTFO Bins 对应章节的锚点链接完整 SUID 或 Limited SUID对命中 GTFO 清单但不在suidExploitation自动执行白名单里的程序脚本会从customSUIDs大字典中取出利用步骤进入手动利用区打印——因为这些利用方式会在系统上创建/修改文件有副作用必须人来确认。第 3 步生成并可选自动执行提权命令exploit_enumerated_suids()731~769 行负责最后的临门一脚if _bin in suidExploitation: _results suid_bins suidExploitation[_bin] # 拼出程序 提权参数 commands.append(_results)不带-e只把拼好的命令打印出来提示请手动执行带-e先打印命令、sleep(0.5)留点戏剧感再调用os.system()真实执行 比如发现/bin/nc.openbsd可提权时最终执行的就是nc -e /bin/sh这类命令——一条命令直接拿到 shell。第 4 步彩色 Banner 与交互细节代码后半段还定义了一组 ANSI 转义颜色常量603~610 行和 4 行 ASCII Banner614~617 行让终端输出自带黑客风格不同颜色的段落标记[#][!][~]$分别对应扫描中跳过自定义可执行配合分隔线长输出也层次分明。main()里还贴心地捕获了KeyboardInterrupt——按CtrlC中断时不会抛丑陋的堆栈而是打出一句俏皮的 Aye, why you do dis!?。看一次真实运行output.matlab 样例仓库内置的 output.matlab 是一份完整的运行实录能直观看到输出结构[#] Finding/Listing all SUID Binaries .. ------------------------------ /bin/zsh /bin/umount /bin/su /bin/mount /bin/ping ...先列出全部 SUID 程序随后依次进入Default蓝色→ Custom青色→ GTFO 命中绿色→ Manual Exploitation黄色各分区最后给出可执行命令。新手建议先读一遍这份样例再去对照源码理解每个分区的由来。使用注意OSCP 考试能带吗作者在README.md中明确回答可以。他本人在 OSCP 考试中用过并在报告中注明了出处但建议考试时不要使用-e自动利用只保留枚举能力即可。再强调一次使用原则摘自官方 Note请先了解 SUID 位的工作原理再运行脚本不知道自己在做什么时不要带-e参数。总结值得初学者借鉴的三个设计点极简依赖只导入sys.argv、os.system/popen、time.sleep三行791 行单文件拿到就能跑——独立脚本的教科书级示范数据驱动把知识沉淀成五张字典/列表扩展新利用方式只需加数据逻辑代码零改动安全分级区分可自动执行的无害利用与有副作用需人工确认的利用自动化与安全的边界划得很清楚如果你在做 CTF、OSCP 备考或权限提升研究SUID3NUM 这种枚举 → 过滤 → 比对 → 利用的四段式设计本身就是一个可以套用到其他枚举工具上的优秀模板。项目采用 MIT 许可证 发布可自由使用与二次开发。【免费下载链接】SUID3NUMA standalone python script which utilizes pythons built-in modules to enumerate SUID binaries, separate default binaries from custom binaries, cross-match those with bins in GTFO Bins repository auto-exploit those, all with colors! ( ͡~ ͜ʖ ͡°)项目地址: https://gitcode.com/gh_mirrors/su/SUID3NUM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表