⭐ 在 GitHub 上为我们加星标 — 以示支持!
💡 建议在深色模式下查看 :)
SUDO_KILLER 项目已入围 2023 年 SANS 差异奖开放源代码工具类决赛。
SUDO_KILLER 是一款面向网络安全从业人员(渗透测试人员、安全审计员、系统管理员、CTF 玩家和信息安全学生)的工具,用于简化 Linux 环境中的权限提升。它专注于与 SUDO 使用相关的漏洞,包括 sudo 规则配置错误、基于版本的弱点(CVE 及其他漏洞)以及风险二进制部署(GTFOBINS)。这些薄弱点可被利用来获得 ROOT 级别权限或冒充其他用户。
SUDO_KILLER 提供了一个潜在的用于手动提权的命令和本地漏洞利用的目录。重要的是,它避免自动利用漏洞,要求用户根据其预期用途自行执行利用过程。
以下是 SUDO_KILLER 执行的检查列表:
[!WARNING] 上述检查列表并非详尽无遗。
要开始使用 SUDO_KILLER,您可以通过 git clone 或下载 zip 文件。如果您想练习和/或测试它,有一个易受攻击的测试环境(使用 Docker)。请参阅相关视频,其中概述了如何设置 Docker 并运行 SUDO_KILLER。在 Docker 环境中可以设置多个场景,可用于测试不同的配置错误或缺陷。或者,您可以在需要审计的系统上运行它,以检查与 sudo 相关的配置错误和/或缺陷。```shell ./SUDO_KILLERv.sh -c -a -e -r report.txt -p /tmp
可选参数:
</br>-c : 包含 CVE 检查</br>
</br>-a : 包含与第三方应用/设备相关的 CVE</br>
</br>-i : 从 extract.sh 导入(离线模式)</br>
</br>-e : 包含 sudo 规则/sudoers 文件的导出</br>
</br>-r : 报告名称(保存输出)</br>
</br>-p : 保存导出和报告的路径</br>
</br>-s : 提供用户密码用于 sudo 检查(如果当前用户的密码无法获取 sudo 规则时)</br>
</br>-h : 帮助
> [!NOTE]
> 值得注意的是,当使用 -c 参数时,提供了两种检查类型:一种仅根据当前使用的 sudo 版本来识别 CVE,另一种还会检查所需条件。
> 通常情况下,某个 sudo 版本可能存在漏洞,但成功利用可能需要一些先决条件。
> [!NOTE]
> 提供密码:如果运行 sudo -l 需要密码,那么如果不通过 -s 参数提供密码,脚本将无法工作。
<a name="docker"></a>
### Docker(易受攻击的测试环境)
<p align="left">
<img width="25%" src="https://raw.githubusercontent.com/TH3xACE/res/main/SK/docker.gif" alt="-dockerlogo"/>
</p>
提供了一系列 Docker 容器,以提供一个故意设置漏洞的环境,用于测试和动手实验 `SUDO_KILLER` 以及各种漏洞。```shell
service docker start
docker pull th3xace/sudo_killer_demo3
docker run --rm -it th3xace/sudo_killer_demo3
(This docker is only to test the CVE-2019-18634 (pwfeedback))
service docker start
docker pull th3xace/sudo_killer_demo2
docker run --user 1000 --rm -it th3xace/sudo_killer_demo2
(This docker is only to test the CVE-2025-32463 (chwoot)) -> Credits to author $ git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot.git $ cd CVE-2025-32463_chwoot
$ service docker start $ ./run.sh
pwn@f722d9182d1f:~$ ./sudo-chwoot.sh id woot! uid=0(root) gid=0(root) groups=0(root),1001(pwn)
pwn@f722d9182d1f:~$ ./sudo-chwoot.sh woot!
root@f722d9182d1f:/# id uid=0(root) gid=0(root) groups=0(root),1001(pwn)
## 为什么可以无需密码运行 "sudo -l"?
默认情况下,如果对主机上用户的任何条目应用了 NOPASSWD 标签,你就可以无需密码运行 "sudo -l"。此行为可以通过 verifypw 和 listpw 选项覆盖。
但是,这些规则仅影响当前用户,因此如果可以模拟用户(使用 su),也应从该用户启动 sudo -l。
有时,即使没有密码无法访问 sudo -l,文件 /etc/sudoers 仍然可读。
<a name="scenarios"></a>
## 场景
要切换场景(为防止不同场景之间的冲突)在 docker (demo3) 上:```shell
switchScenario <scenario_number>
Available scenarios: 0 to 10
All Scenarios 0 : Conflict might occur!
Scenario 1: [2,3] CVE - Rules
Scenario 2: [4] Excessive permissions
Scenario 2: [5] Excessive permissions (Authentication required)
Scenario 3: [6] User Impersonation
Scenario 4: [7] Common Misconfiguration (Change owner)
Scenario 4: [8,11] Common Misconfiguration (Wildcard)
Scenario 5: [13] Missing scripts from sudo rules
Scenario 6: [17] Dangerous Environment Variables
Scenario 7: [18] Dangerous binaries (gtfobins)
Scenario 8: [19] Recursive Impersonation test
Scenario 9: [20] Environment Path Hijacking
Scenario 10: [21] App Specific sudo vuln/misconfig
Scenario 11: [5] Excessive permissions (Authentication required)
Scenario 12: [16] Backdooring sudo (Credentials Capture)
播放列表可在此处找到:https://www.youtube.com/watch?v=Q8iO9mYrfv8&list=PLQPKPAuCA40FMpMKWZLxQydLe7rPL5bml
[!IMPORTANT] 快速演示如何在提供的 Docker 上进行正确测试的短视频。
[!WARNING] 以下视频列表并不完整,如需查看所有视频,请查看播放列表链接。
SUDO_KILLER 版本 3 现在包含一系列可用于完成多种任务的工具。脚本位于 SUDO_KILLERv3/SUDO_KILLER/SK-Tools/
SK-ImperBruteForce-NoPwd.sh:利用 /etc/passwd 中的用户执行模拟暴力破解,从 UID 1000 的用户开始。SK-credHarvest2.sh:通过别名创建虚假的 sudo 来捕获凭据,然后重定向到真实的 sudo。SK-app-check.sh:检查与特定第三方应用程序、设备或编程语言相关的 sudo 漏洞 (仍在进行中)。SK-ttyInject.sh:滥用 TTY 回推,如果 root 在受控用户上使用 su -,则执行任意命令。SK-recursive-impersonate.sh:递归模拟识别,默认深度为 3。SK-alias-report.sh:根据不同条件搜索别名。SK-csuid-with-sudo.sh:识别自定义 SUID 二进制文件,并检查 sudo 是否未以完整路径运行。SK-su-BruteForce.sh:通过 对特定用户执行密码暴力破解或喷洒。SK-Tools 中的脚本 SK-credHarvest2.sh 允许通过别名创建虚假的 sudo 来捕获凭据,然后重定向到真实的 sudo。目前仅适用于 bash(尚未为 ZSH 或其他 shell 实现)配置的 Linux。
使用 sudo 时提示输入凭据所显示的消息因使用的版本而异。可以在两个选项之间进行选择(基于操作系统版本不同)。 显示消息的示例(新版本和旧版本)
[!TIP] (新版本)[sudo] user 的密码:
(旧版本)密码:
对于所有用户(auser): 当你拥有 root 权限或对用户主目录具有过多权限,并希望以简单方式收集凭据时:```shell ./SK-credHarvest2.sh auser <new|old> ; source /home/*/.bashrc
对于当前用户 (cuser):```shell
./SK-credHarvest2.sh cuser <new|old> ; source /home/<currentuser>/.bashrc
[!CAUTION] 要停止凭据收集:使用相同参数再次运行同一脚本
输出:日志 /tmp/sk-crds.log 将包含凭据
你需要 root 权限、访问 sudoers 备份的权限或对 /etc/sudoers 的读取权限。```shell Usage: ./SK-alias-sudoers.sh -p <sudoers_path> -k [-u] [-r] [-m] [-c] | [-a] where -u: user | -r: runas | -m: host | -c: command | -a: all
### 通过su进行暴力破解/密码喷洒 (SK-su-BruteForce.sh)
使用su进行密码暴力破解和密码喷洒,支持并发、超时和睡眠。```shell
Usage: ./SK-su-BruteForce.sh [-h|--help] [-m|--module MODULE] [-u|--user USER|-uf|--userfile USERFILE] [-p|--password PASSWORD|-pf|--pwdfile PASSFILE] [-c|--concurrent CONCURRENT] [-s|--sleep SLEEP] [-t|--timeouts TIMEOUTS]
Module: Password Bruteforce : pwdbf
Example: ./SK-su-BruteForce.sh -m "pwdbf" -u user -pf password.txt -c 5 -s 0.005 -t 0.9
Module: Password Spray : pwdspr
Example: ./SK-su-BruteForce.sh -m pwdspr -uf users.txt -p password -c 5 -s 0.005 -t 0.9
Module: User:Password Bruteforce : usrpwdbf
Example: ./SK-su-BruteForce.sh -m usrpwdbf -uf users-pwd.txt -c 5 -s 0.005 -t 0.9
在 /mnt/ /opt/ /etc/ /etc/ /home/ /app*/ 以及任何通过参数解析的额外路径中查找可能的 sudoers 备份文件```shell Usage: ./SK-search-sudoers.sh /tmp/
### 更新危险二进制文件 - GTFOBINS (SK_dbins_update.sh)
更新危险二进制文件,请进入 dbins/update 目录并运行 ./SK_dbins_update.sh。请确保你已连接互联网。```shell
Usage: ./SK_dbins_update.sh
寻找具有相对路径且可能被滥用的二进制文件!如果没有设置 secure_path。```shell sudo -l <..snip..> (root) SETENV: NOPASSWD: /opt/support/purge.sh <..snip..>
Usage: ./SK-relative-path.sh /opt/support/purge.sh
<a name="contribute"></a>
# 贡献
`SUDO_KILLER` 是一个开源项目,非常感谢任何贡献。无论您是帮助我们修复错误、提出新功能、改进文档还是传播信息,我们都欢迎您成为贡献者。如果您有任何建议、反馈或想贡献,请通过 Twitter 或 LinkedIn 联系我,您也可以创建拉取请求。我正在寻找与第三方相关的 sudo CVE 贡献(我列出了大约 175 个),任何帮助都将不胜感激。
- 错误报告:如果您在使用 `SUDO_KILLER` 时看到错误消息或遇到问题,请创建一个 [bug report](https://github.com/TH3xACE/SUDO_KILLER/issues/new?assignees=&labels=type%3A+bug&template=bug.yaml&title=%F0%9F%90%9B+Bug+Report%3A+)。
- 功能请求:如果您有想法或缺少某项功能以使开发更简单、更健壮,请提交一个 [feature request](https://github.com/TH3xACE/SUDO_KILLER/issues/new?assignees=&labels=type%3A+feature+request&template=feature.yml)。
<a name="stars"></a>
## 随时间增长的星标数
感谢大家的支持!
[](https://starchart.cc/TH3xACE/SUDO_KILLER)
<a name="support"></a>
## 支持
<a href="https://www.patreon.com/TH3xACE">
<img src="https://assets.kitploit.com/production/public/readmes/2701/0c68395ad843ce5107774011154103ae8d17d44f3cafc73e6395bdd05da753c7.png" width="160">
</a>
<a name="credits"></a>
## 致谢
我独立编写了此脚本,并利用了 GitHub 和其他来源的在线资源。同样感谢与 CVE 相关漏洞的创建者/发布者。您可以在漏洞本身以及工具执行时的附注中追溯其详细信息和参考。特别感谢 Vincent Puydoyeux,他的灵感推动了此工具的开发;以及 Koutto,他在处理 Docker 复杂性和增强工具功能方面提供了宝贵帮助。此外,衷心感谢 Emilio Pinna(norbemi)和 Andrea Cardaci(cyrus_and)对 GTFO Bins 的宝贵贡献,这对本项目的发展产生了重大影响。
<a name="disclaimer"></a>
## 免责声明
此脚本仅供教育目的使用。未经系统所有者许可,请勿在其系统上使用。通常的免责声明同样适用,尤其是本人(TH3xACE)不对因直接或间接使用本项目提供的信息或功能而造成的任何损害负责。作者(TH3xACE)或任何互联网提供商对这些程序或其衍生品的内容或滥用不承担任何责任。使用这些程序即表示您接受:因使用脚本而造成的任何损害(数据丢失、系统崩溃、系统受损等)并非作者责任。
<a name="license"></a>
## 许可协议
`SUDO_KILLER` 采用 MIT 许可证,使用时请给予适当致谢。如有商业用途,请考虑捐赠。
sudoSK-search-sudoers.sh:识别当前主机上可能的 sudoers 备份文件。