本质上来说已经脱离了CTF的范围,是一种实用性质的漏洞了
4.1 提权的基本概念与分类
提权是指攻击者利用系统、软件或配置中的漏洞,将自身的低权限(如普通的 Web 服务用户、访客用户)提升为高权限(如 Linux 的 root 或 Windows 的 SYSTEM / Administrator)的过程。
- 垂直提权: 权限等级的跨越。例如从普通用户
leviathan提升到超级用户root。这是最常见的提权目标。 - 水平提权: 同等级别权限的平移。例如从普通用户 A 获取普通用户 B 的权限(通常是为了获取 B 目录下的敏感文件或特定执行权限)。
4.2 Linux 环境下常见的提权路径
在二进制安全和系统底层安全范畴,提权通常依赖于系统底层的逻辑缺陷或权限配置失误:
1. SUID/SGID 程序滥用与逻辑漏洞
- 原理: 当一个可执行文件被赋予了 SUID 权限(如
-rwsr-xr-x),普通用户执行该程序时,进程会暂时获得该程序属主(通常是 root)的有效用户 ID(eUID)。 - 常见利用:
- 命令注入与 API 误用: 程序在拥有高权限的状态下,未严格过滤用户输入,直接调用了
system()或exec()系列函数(如利用access和cat对空格解析差异的绕过)。 - 环境变量劫持: SUID 程序在调用外部系统命令时没有使用绝对路径(如直接调用
cat而不是/bin/cat),攻击者可以伪造一个同名恶意程序并修改自身的PATH环境变量,诱导 SUID 程序以高权限执行恶意代码。 - 已知二进制文件滥用:利用系统中自带的、配置了 SUID 的合法工具(如
find,vim,bash)的特殊参数来实现提权。
- 命令注入与 API 误用: 程序在拥有高权限的状态下,未严格过滤用户输入,直接调用了
2. 内核漏洞 (Kernel Exploits)
-
原理: 操作系统内核本身存在 C/C++ 内存破坏漏洞(如堆栈溢出、UAF)或逻辑条件竞争漏洞。
-
经典案例:
-
Dirty COW (脏牛, CVE-2016-5195): 利用写时复制(Copy-on-Write)机制的条件竞争,导致只读内存映射被修改,从而篡改
/etc/passwd或 SUID 程序。 -
Dirty Pipe (CVE-2022-0847): 管道缓冲区处理逻辑漏洞,允许普通用户向只读文件中注入数据。
-
3. 权限配置不当与服务劫持
-
Sudo 配置滥用: 管理员为了方便,在
/etc/sudoers中配置了NOPASSWD,允许低权限用户无密码执行某些特定命令,但未对命令参数进行严格限制。 -
计划任务 (Cron Jobs): 系统定时以 root 权限执行某个脚本,但该脚本本身或其所在的目录对普通用户可写;或者脚本中存在通配符(
*)注入漏洞。 -
敏感文件权限错误:
/etc/passwd或/etc/shadow文件权限配置错误,导致普通用户可读写,从而直接添加特权账号或破解密码 Hash。
4.3 实战排查与利用思路
在获取了低级 Shell 后,通常的自动化与手动排查步骤:
-
信息收集: 执行
uname -a,id,env, 查看当前系统版本和内核信息。 -
搜寻脆弱点:
-
查找 SUID 程序:
find / -perm -4000 -type f 2>/dev/null -
查看 Sudo 权限:
sudo -l -
检查可写目录与敏感文件:寻找是否有
/etc目录下的异常权限。
-
-
自动化枚举工具: 实战中常使用
LinPEAS或Linux Smart Enumeration (lse.sh)脚本快速扫描提权路径。
4.4 防御与取证视角 (Forensics & Defense)
-
防御: 最小权限原则;定期审计系统中的 SUID 文件(剥离不必要的 SUID 位);及时修补内核漏洞;使用 AppArmor 或 SELinux 限制进程行为。
-
取证痕迹: 提权攻击往往会在系统中留下痕迹。可通过审计日志(
/var/log/auth.log,auditd日志)排查异常的su或sudo行为;检查/tmp目录下是否有残留的C语言提权源码编译文件或伪造的软链接环境;分析进程树中由非预期父进程产生的root权限 Shell (/bin/sh或/bin/bash)。