SUID提权原理与实战技巧
TOPIC SOURCE
实战仿真靶场Killboy_Team_1——渗透测试过程
在linux系统中,SUID(Set‑User‑ID)位是一把双刃剑:它让普通用户在执行特定二进制文件时获得文件所有者的权限,恰恰也是提权攻击的常用入口。了解其内部机制,才能在渗透测试中快速定位并利用这些“特权文件”。
SUID的工作原理
当可执行文件的权限位被标记为rwsr-xr-x(即chmod 4755),内核在fork子进程后,会把进程的有效用户ID(euid)设置为文件所有者的UID。换句话说,若该文件属root,执行者瞬间拥有root的权限,直至进程结束。
常见的SUID二进制文件
- /bin/ping
- /usr/bin/sudo
- /bin/mount
- /usr/bin/passwd
- /bin/sh(有时被设置为SUID)
利用SUID进行提权的基本思路
核心在于找到能够接受外部输入并在提升权限后执行的二进制。常见手法包括:利用环境变量(LD_PRELOAD、PATH)劫持可执行路径;借助argv注入或system()调用执行自定义脚本;以及使用find的-exec特性直接运行恶意命令。
# 查找所有SUID文件并尝试利用 find -exec
find / -perm -4000 -type f 2>/dev/null | while read bin; do
echo "[*] Testing $bin"
$bin -exec /bin/sh -c 'id>&1' ;
done
实战案例:利用find提权
在一次内部渗透演练中,目标机器的/usr/bin/find被设置为SUID。攻击者先通过find / -perm -4000 -type f确认了该文件的存在。随后,利用-exec选项执行/bin/sh -p(保留root特权),成功打开了一个root shell。
关键细节包括:①确保sh本身没有被限制(如rbash);②使用-exec /bin/sh -c 'id'而不是直接调用sh,可以规避某些审计机制;③在获得root后,立即检查/etc/shadow、/root/.ssh/authorized_keys等持久化路径。
“SUID文件往往是系统管理员忽视的‘后门’,一次细微的权限漏配,就可能让普通用户在瞬间跃升为root。”——安全研究员李明

参与讨论
暂无评论,快来发表你的观点吧!