官网:http://securitytech.cc/
你好,我们将一起学习 Linux 权限提升(Privilege Escalation) 的基础知识,包括必须掌握的重要命令,以及一些可以用来拿到那“甜美的 root shell”的技术。如果你对这个主题感兴趣,那就跟我一起深入吧。
什么是权限提升(Privilege Escalation)?
权限提升(Privilege Escalation,简称 PrivEsc)是指从一个 低权限用户 提升到 高权限用户 的过程。这通常是由于操作系统或其应用程序中存在 漏洞、错误配置或不安全的权限设置 所导致的。
权限提升通常分为两种类型:
Linux 权限是如何工作的?
要理解权限提升,首先必须理解 Linux 的权限机制。
在 Linux 中,权限定义了 谁可以对文件进行读取(read)、写入(write)和执行(execute)。权限分别分配给:
文件所有者(owner)
所属组(group)
其他用户(others)
查看文件权限可以使用以下命令:
在示例中,这是一个普通的 .PHP 文件,其权限字符串为:
权限始终由 10 个字符组成:
对示例权限的解读如下:
第一个 -:表示这是一个文件,而不是目录
rw-:所有者可读、可写、不可执行
r--:组用户只能读取
r--:其他用户只能读取
再看一个可执行文件的例子:
-:不是目录
rwx:所有者可读、可写、可执行
r-x:组用户可读、可执行
r-x:其他用户可读、可执行
用户(Users)
Linux 用户通常分为三类:
Root 用户:也称超级用户(Superuser),拥有系统的最高权限,可以访问所有文件和命令,并管理其他账户。
普通用户:标准用户,只能访问自己的文件,通常位于 /home/username。
系统用户:用于运行后台服务(如 Web 服务器、数据库)的账户。
id 命令用于显示当前用户的:
用户 ID(UID)
主组 ID(GID)
所属组列表
也可以查看其他用户的信息,例如:
root 的 UID 永远是 0。
按回车或点击查看大图:
这是权限提升中 最重要的命令之一,因为它能直接告诉我们当前用户的权限级别以及所属的用户组,这些信息往往已经隐含了潜在的提权路径。
另一个非常重要的命令是:
该命令会列出当前用户 允许以 root 权限执行的命令,并告诉我们该用户是否能使用 sudo。后面你会看到它为何如此关键。
枚举系统中的用户
系统中的用户信息存储在 /etc/passwd 文件中:
若只想获取用户名列表:
cat /etc/passwd | cut -d ":" -f 1
-d ":":以 : 作为分隔符
-f 1:取第一个字段(用户名)
普通用户通常拥有 /home 目录,可以这样筛选:
cat /etc/passwd | grep /home
查看当前登录用户的命令包括:
用户组(Groups)
用户组在权限提升中扮演着非常重要的角色。属于某些特定组,往往意味着:
常见可被滥用的用户组包括:
sudo:可使用 sudo 以 root 身份执行命令
root:直接拥有 root 权限
adm:可读取 /var/log 下的日志(可能包含凭据)
docker:可启动特权容器获取宿主机 root
lxd/lxc:同样可构造特权容器并挂载宿主文件系统
disk:直接访问磁盘原始数据
查看用户所属组:
权限提升技术(Techniques)
权限提升不存在“万能都需要 枚举 → 分析 → 利用,找到适合的提权路径。
接下来我们将通过 Hack The Box 的真实靶机,学习三种常见提权方式:
Sudo 提权
示例来自 Strutted 靶机。
通过 CVE-2024-53677 漏洞拿到初始权限后,我们获得了如下用户凭据:
username: jamespassword: IT14d6SSP81k
SSH 登录:
查看系统信息:
检查 sudo 权限:
发现可以 无需密码以 root 身份运行 tcpdump,这是一个明显的提权s:
GTFOBins 是一个整理好的 Unix 二进制程序滥用列表,可用于逃逸受限 shell、权限提升、维持高权限、文件传输、反弹 shell 等。
我们将 id 换成拷贝 bash 的命令:
COMMAND='cp /bin/bash /tmp/my_bash && chmod +s /tmp/my_bash'
这样会生成一个 带 SUID 的 root bash。
检查权限:
执行:
🎯 成功通过 sudo 滥用完成提权。
SUID 提权
示例来自 Oopsie。
用户凭据:
username: robertpassword: M3g4C0rpUs3r!
该用户无法使用 sudo,但属于 bugtracker 组:
查找该组可执行文件:
find / -group bugtracker 2>/dev/null
发现:
权限如下:
注意 rws,表示 SUID 位已设置,且 owner 是 root。
程序调用了未使用绝对路径的 cat,可通过 PATH 劫持 提权:
构造恶意 cat:
执行 bugtracker 后:
🎯 获得 root shell。
Capabilities 提权
示例来自 Cap。
凭据:
username: nathanpassword: Buck3tH4TF0RM3!
枚举 capabilities:
发现:
/usr/bin/python3.8 = cap_setuid+ep
利用方式:
/usr/bin/python3 -c 'import os; os.setuid(0); os.system("/bin/bash")'
🎯 成功提权为 root。
总结
在本文中,我们学习了 Linux 权限提升的基础知识,并通过三个真实场景演示了:
sudo 滥用
SUID 滥用
Capabilities 滥用
权限提升是一项需要不断练习和积累经验的技能,希望这篇文章能对你有所帮助,也能激发你继续深入学习。