git:20260619.8264b54 to git:20260801.6c9c129

76 added, 313 removed. Audit A to A.

---
name: escalate-linux-privilege
- description: 在 Linux 目标上系统性地检测权限提升路径,包括 SUID/SGID 文件、sudo 配置、可写的 cron 脚本、内核版本漏洞、NFS 错误配置、PATH 劫持等。当任务涉及 Linux 提权、SUID、sudo 滥用、内核漏洞时使用。
- enabled: true
- tags:
- - privilege-escalation
- - linux
- ---
-
- # Linux 权限提升路径检测
-
- 当目标是 Linux 主机且当前权限为普通用户(非 root)时,使用这个 skill 系统性地检测可用的提权路径。
-
- **原则:只检测,不利用。** 所有步骤为信息收集,不执行实际提权操作,由用户决定是否利用。
-
- ---
-
- ## 一、OPSEC 与环境约束
-
- | 原则 | 说明 |
- |---|---|
- | 只读操作 | 不修改系统文件、不安装内核模块、不执行实际提权 |
- | 低噪声 | `find /` 级搜索加 `timeout`,避免触发 HIDS 文件遍历告警 |
- | 避免触发审计 | 不读取 `/etc/shadow`(除非已确认有权限),不执行 `sudo` 带密码 |
- | 分阶段收敛 | 先快速检测高价值向量(SUID/sudo),再扩展到内核和服务 |
- | 并发执行 | 独立检测项并发执行,减少总耗时 |
-
- **WebShell 环境注意:**
- - WebShell 通常以 Web 服务用户运行(www-data/tomcat/nobody),`sudo -l` 可能需要密码
- - `find /` 在容器 overlay fs 上性能极差,必须限定目录或加 `timeout`
- - 部分命令(`lsb_release`、`showmount`)可能不存在,需回退
- - 非交互式 Shell 下 `sudo` 无法输入密码,只能检测 NOPASSWD 规则
-
- ---
-
- ## 二、目标
-
- 检测并报告以下提权向量:
-
- - SUID/SGID 可利用的二进制文件
- - sudo 配置中的可利用规则(NOPASSWD)
- - 可写的 cron 任务脚本
- - 可写的 PATH 目录(PATH 劫持)
- - 敏感文件权限(/etc/passwd、/etc/shadow 可写)
- - 内核版本和已知 CVE
- - 服务配置错误(运行中的特权服务)
- - 环境变量注入(LD_PRELOAD 等)
- - NFS 错误配置(no_root_squash)
- - Docker/LXC 容器逃逸向量
-
+ description: 在 Linux Puppet 立足点上以只读方式发现并排序本地提权候选路径,覆盖 sudo、SUID/SGID、cron、PATH、服务、容器、Docker socket、NFS 和版本风险。当红队任务需要扩大本机权限、突破容器边界或判断是否值得投入提权时使用;本 skill 不执行利用。
---
- ## 三、工作流程
-
- ### 执行前:制定计划
-
- 在任何工具调用前,先输出:
-
- 1. **目标**:检测目标 Linux 主机上可用的权限提升路径
- 2. **路径**:并发检测 SUID/sudo/cron → 内核 CVE 评估 → 服务和容器检测 → 汇总报告
- 3. **终止条件**:所有检测项已执行并汇总,或当前用户已是 root 时停止
-
- 如果已有侦察摘要,先读取 `hostProfile`(内核版本)、`privilegeProfile`(当前用户)、`containerProfile`(容器状态),跳过已有信息。如果当前用户已是 root,此 skill 无需执行。
-
- ### 第一阶段:用户与环境确认(并发)
-
- 同时执行:
-
- 1. **当前用户**:`getCurrentUserInfo` 或 `id && whoami && groups`
- 2. **内核版本**:`uname -r && cat /etc/os-release 2>/dev/null`
- 3. **可登录用户**:`cat /etc/passwd | grep -v "nologin\|false" | grep "sh$"`
-
- ### 第二阶段:高价值向量检测(并发)
-
- 同时执行以下检测:
-
- **1. SUID/SGID 文件:**
-
- ```bash
- timeout 15 find / -perm -4000 -type f 2>/dev/null
- timeout 15 find / -perm -2000 -type f 2>/dev/null
- ```
-
- 对比 GTFOBins 可利用清单,重点关注:
-
- ```
- nmap, vim, vi, nano, find, awk, python, python3, perl, ruby, php, bash,
- sh, more, less, man, cp, mv, tar, zip, unzip, curl, wget, nc, netcat,
- openssl, base64, dd, xxd, tee, env, strace, ltrace, gdb, git, svn, ftp,
- sftp, ssh, scp, rsync, screen, tmux, docker, lxc, kubectl, ionice, nice,
- taskset, time, timeout, journalctl, systemctl, service, mount, umount,
- chsh, chown, chmod
- ```
-
- **2. sudo 配置:**
-
- ```bash
- sudo -l 2>/dev/null
- cat /etc/sudoers 2>/dev/null
- ls -la /etc/sudoers.d/ 2>/dev/null
- ```
-
- 重点关注:
- - `NOPASSWD` 规则(WebShell 环境下唯一可利用的 sudo 配置)
- - 允许执行解释器的规则(python、bash、vim 等)
- - 通配符(`*`)滥用
- - `env_keep` 中保留 `LD_PRELOAD`
-
- **3. 可写的 cron 任务:**
-
- ```bash
- cat /etc/crontab 2>/dev/null
- ls -la /etc/cron.d/ /etc/cron.daily/ /var/spool/cron/ 2>/dev/null
- crontab -l 2>/dev/null
- # 查找 root cron 引用的可写脚本
- grep -r "^[^#]" /etc/cron* 2>/dev/null | grep -v "^Binary"
- ```
-
- **4. PATH 劫持:**
-
- ```bash
- echo $PATH | tr ':' '\n' | while read dir; do test -w "$dir" && echo "WRITABLE: $dir"; done
- ```
-
- **5. 敏感文件权限:**
-
- ```bash
- ls -la /etc/passwd /etc/shadow /etc/sudoers 2>/dev/null
- find /etc -writable -type f 2>/dev/null | head -20
- ```
+ # Linux 提权路径优选
- ### 第三阶段:内核与组件 CVE 评估
+ 目标不是罗列所有弱点,而是找出最可能、收益最高、噪声最低且能推进任务的提权路径。
- 根据内核版本对照以下高危 CVE:
+ ## 行动目标
- | CVE 编号 | 名称 | 受影响版本 | 修复基线 |
- |---|---|---|---|
- | CVE-2016-5195 | Dirty COW | 2.6.22 ~ 4.8.3 | 4.8.3 / 4.7.9 / 4.4.26 |
- | CVE-2022-0847 | Dirty Pipe | 5.8 ~ 5.16.11 | 5.16.11 / 5.15.25 / 5.10.102 |
- | CVE-2024-1086 | nf_tables UAF | 3.15 ~ 6.7.2 | 6.1.76 / 6.6.15 / 6.7.3 |
- | CVE-2021-4034 | PwnKit (pkexec) | 所有 polkit 版本 | 发行版修复包 |
- | CVE-2021-3156 | Baron Samedit (sudo) | sudo 1.8.2 ~ 1.9.5p1 | sudo 1.9.5p2+ |
- | CVE-2023-4911 | Looney Tunables (glibc) | glibc 2.34+ | 发行版修复包 |
- | CVE-2023-0386 | OverlayFS EoP | 5.11 ~ 6.1.8 | 5.15.91 / 6.1.9 |
- | CVE-2021-3493 | Ubuntu OverlayFS | Ubuntu 特定内核 | Ubuntu 修复包 |
- | CVE-2022-0185 | fs_context | 5.1 ~ 5.16 | 发行版修复内核 |
- | CVE-2019-5736 | runc 容器逃逸 | runc ≤ 1.0-rc6 | Docker 18.09.2+ |
+ - 确认当前权限是否阻碍演练目标。
+ - 发现本地或容器边界中的可操作提权候选。
+ - 对候选路径进行前提验证和红队优先级排序。
+ - 为后续人工或独立验证提供证据,不执行提权。
- 补充检测组件版本:
+ ## 授权与 ROE
- ```bash
- # pkexec 版本(PwnKit)
- pkexec --version 2>/dev/null
- # sudo 版本(Baron Samedit)
- sudo --version 2>/dev/null | head -1
- # glibc 版本(Looney Tunables)
- ldd --version 2>/dev/null | head -1
- ```
+ - 风险等级:medium;访问模式:read-only。
+ - 当前已是 root 时停止,转而评估目标达成或后续行动价值。
+ - 不执行利用、下载代码、编译载荷、写 cron、修改服务或触发崩溃风险测试。
+ - `sudo` 仅使用非交互模式,不提交密码。
+ - 摘要不保存可直接执行的利用代码。
- > **注意**:发行版常通过 backport 修复,排查时应同时核对上游版本和发行版安全公告中的包版本。
+ ## OPSEC 预算
- ### 第四阶段:服务与容器检测(并发)
+ - 先执行高价值低噪声检查,再决定是否扩大搜索。
+ - SUID/SGID 优先限定标准二进制目录;全根文件系统搜索必须 `-xdev`、限时并限制输出。
+ - 版本匹配只作为候选,不运行 PoC 验证。
+ - 独立只读项并发执行;异步命令获取必要输出后调用 `stopTask` 释放资源。
- **1. 特权服务:**
+ ## 工作流
- ```bash
- ps -eo pid,user,comm --no-header | grep "^.*root" | grep -v "\[" | head -30
- ```
+ 1. 读取侦察摘要,确认任务目标、当前身份、OS、内核和容器状态。
+ 2. 判断提升权限是否会实际推进目标;若不会,建议停止而不是机械扫描。
+ 3. 创建 4 步以内计划:身份与快速路径、配置与文件权限、容器与版本、排序与交接。
+ 4. 执行第一轮低噪声检查;只在没有足够候选时扩大 SUID/cron/服务范围。
+ 5. 对每个候选补齐证据、必要前提、预计收益、稳定性和检测面。
+ 6. 只保留最多 5 条有行动价值的路径,写入一次摘要。
- **2. 环境变量注入:**
+ ## 快速检查
```bash
- sudo -l 2>/dev/null | grep -iE "env_keep|ld_preload|ld_library"
+ id; whoami; groups; uname -r; cat /etc/os-release 2>/dev/null
+ sudo -n -l 2>/dev/null
+ printf '%s\n' "$PATH" | tr ':' '\n' | while IFS= read -r dir; do [ -n "$dir" ] && [ -w "$dir" ] && echo "WRITABLE_PATH=$dir"; done
+ ls -ld /etc/passwd /etc/shadow /etc/sudoers /etc/sudoers.d 2>/dev/null
+ find /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -xdev -type f \( -perm -4000 -o -perm -2000 \) -ls 2>/dev/null
+ cat /etc/crontab 2>/dev/null; crontab -l 2>/dev/null
+ find /etc/cron.d /etc/cron.daily /etc/cron.hourly -xdev -maxdepth 2 -type f -ls 2>/dev/null
+ ps -eo pid,user,comm,args --no-header 2>/dev/null | awk '$2=="root" {print}' | head -50
+ ls -l /var/run/docker.sock 2>/dev/null
+ grep -E 'Cap(Inh|Prm|Eff|Bnd|Amb)' /proc/self/status 2>/dev/null
+ test -f /.dockerenv && echo IN_DOCKER; cat /proc/1/cgroup 2>/dev/null | head -10
+ grep -v '^[[:space:]]*#' /etc/exports 2>/dev/null
```
- **3. Docker / 容器逃逸:**
+ 仅在第一轮没有足够证据时执行:
```bash
- # Docker socket 可写
- ls -la /var/run/docker.sock 2>/dev/null
- # 特权容器检测
- cat /proc/self/status 2>/dev/null | grep CapEff
- # CapEff = 0000003fffffffff 表示特权容器
- test -f /.dockerenv && echo "IN_DOCKER"
- cat /proc/1/cgroup 2>/dev/null | grep -i docker | head -3
+ timeout 15 find / -xdev -type f \( -perm -4000 -o -perm -2000 \) -print 2>/dev/null | head -200
+ find /etc -xdev -type f -writable 2>/dev/null | head -40
+ sudo --version 2>/dev/null | head -1; pkexec --version 2>/dev/null; ldd --version 2>/dev/null | head -1
```
- **4. NFS 错误配置:**
-
- ```bash
- cat /etc/exports 2>/dev/null | grep -v "^#"
- showmount -e localhost 2>/dev/null
- ```
+ 如果 `timeout` 不存在,不运行无边界 `find /`。
- 关注 `no_root_squash` 选项。
+ ## 路径分析
- ---
+ - sudo:验证规则、目标二进制、参数限制、环境保留和是否确为 `NOPASSWD`。
+ - SUID/SGID:核对所有者、权限、真实路径、版本、挂载选项和可控输入,不凭文件名下结论。
+ - cron/服务:只有高权限任务实际引用当前用户可写文件或目录时才标为高置信度。
+ - PATH:必须证明高权限程序使用相对命令;单独的可写 PATH 目录不是完整路径。
+ - Docker/容器:分别评估 socket、能力、宿主挂载、设备和 namespace 证据。
+ - 内核/组件:记录发行版包版本和待核对公告;考虑 backport、稳定性与崩溃风险。
+ - NFS:确认导出可访问、危险选项和挂载前提后再提升优先级。
- ## 四、工具优先级
+ ## 红队排序
- | 优先级 | 工具 | 用途 |
- |---|---|---|
- | 1 | `CommandTools` | 所有检测命令执行 |
- | 2 | `FileTools` | 读取配置文件(sudoers、crontab、exports) |
+ 按以下顺序评分:
- 命令执行模式选择:
+ 1. 是否能推进当前任务目标。
+ 2. 当前前提是否已经满足。
+ 3. 权限收益:root、宿主机或特权服务身份。
+ 4. 稳定性和可回滚性。
+ 5. EDR、auditd、sudo、服务和文件完整性日志噪声。
- | 命令类型 | 模式 |
- |---|---|
- | 快速命令(id、uname) | `exec` |
- | 可能耗时(find /) | `exec` 或 `exec` + `queryTask` |
- | 多个独立命令 | 并发 `exec` |
+ 优先配置错误和既有授权路径,其次文件权限与服务路径,最后才考虑内核类候选。
- ---
+ ## 成功与停止条件
- ## 五、失败回退
+ 成功:至少一条候选路径的目标、证据、必要前提、权限收益和噪声均明确,或确认没有值得投入的路径。
- | 场景 | 回退策略 |
- |---|---|
- | `find /` 超时 | 限定 `/usr/bin`、`/usr/sbin`、`/usr/local/bin` 搜索 SUID |
- | `sudo -l` 需要密码 | 跳过,标注"需密码,WebShell 环境不可用" |
- | `lsb_release` 不存在 | 用 `cat /etc/os-release` |
- | `showmount` 不存在 | 只检查 `/etc/exports` 文件 |
- | 容器内 `/proc` 受限 | 从环境变量和挂载点推断 |
- | `pkexec --version` 不存在 | 用 `dpkg -l policykit-1` 或 `rpm -q polkit` |
- | 权限不足读取 sudoers | 标注后继续其他检测 |
+ 立即停止并报告:
- ---
+ - 当前已是 root 或已具备完成目标所需权限。
+ - 继续验证需要写文件、触发漏洞或改变服务状态。
+ - 只剩高崩溃风险、低置信度版本候选。
+ - 容器或系统范围不在用户授权内。
- ## 六、输出格式
+ ## 摘要与交接
```markdown
- ## Linux 提权路径检测摘要
-
- **当前用户**:{username}(uid={uid})
- **内核版本**:{kernel}
- **发现向量数**:{n}(high: x,medium: y,low: z)
-
- ---
-
- ## 提权向量(按优先级排序)
-
- | # | 类型 | 目标 | 可利用性 | 前提条件 |
- |---|------|------|---------|---------|
-
- ## 向量详情
-
- ### [HIGH] {vector_name}
-
- - **类型**:{suid_binary / sudo / cron / kernel_cve / ...}
- - **目标**:{具体文件/配置/CVE}
- - **可利用性**:{high / medium / low}
- - **利用前提**:{条件说明}
- - **参考**:{GTFOBins / CVE 编号}
-
- ## 内核 CVE 评估
-
- | CVE | 名称 | 匹配 | 备注 |
- |-----|------|------|------|
-
- ## 已检测项
-
- {列出所有已检测的类别和结果}
-
- ## 未检查项
-
- {权限不足或工具缺失导致未检测的项}
-
- ## 下一步建议
-
- 2~3 条具体建议
- ```
-
- ### 建议示例
-
- | 发现 | 建议 |
- |---|---|
- | SUID 可利用 | 用户可通过 GTFOBins 技术提权 |
- | 内核 CVE 匹配 | 评估 exploit 可用性和稳定性 |
- | Docker socket 可写 | 通过 Docker 挂载宿主机文件系统逃逸 |
- | 提权成功后 | 使用 persistence-linux skill 建立持久化 |
- | 发现凭据线索 | 使用 hunt-credentials skill 深入收集 |
-
- ---
-
- ## 七、结构化摘要写入
-
- 完成后必须:
-
- 1. `manage_recon_summary(action="append")` — 提权向量检测结果摘要
- 2. `manage_recon_summary(action="append")` — 机器可读字段
-
- 结构化 patch 示例:
-
- ```json
- {
- "privilegeEscalation": {
- "linux": {
- "currentUser": "www-data",
- "currentLevel": "user",
- "vectors": [
- {
- "type": "suid_binary",
- "target": "/usr/bin/find",
- "exploitability": "high",
- "technique": "find . -exec /bin/sh -p \\;",
- "reference": "GTFOBins"
- },
- {
- "type": "kernel_cve",
- "target": "CVE-2021-4034",
- "exploitability": "high",
- "kernelVersion": "5.4.0-42-generic",
- "note": "pkexec SUID + polkit 版本 < 0.120"
- }
- ],
- "checkedCategories": ["suid", "sudo", "cron", "kernel", "path_hijack", "nfs", "container", "services", "env_inject"]
- }
- },
- "openQuestions": ["persistence-linux"]
- }
+ ## Linux 提权路径更新
+ - 当前身份与任务阻碍:...
+ - 候选路径与证据:...
+ - 已满足/缺失前提:...
+ - 预期权限收益:...
+ - 成功率、稳定性和噪声:...
+ - 推荐顺序与停止理由:...
```
- ---
-
- ## 八、决策规则
-
- | 场景 | 行为 |
- |---|---|
- | 当前用户已是 root | 告知用户已有最高权限,此 skill 不适用 |
- | 所有检测命令 | 只读操作,不写入任何文件 |
- | `find /` 耗时 | 使用异步模式,等待时先执行其他检测 |
- | 发现 docker.sock 可写 | 单独标注"高危:Docker Socket 逃逸" |
- | 内核版本匹配 CVE | 列出 CVE 编号和概要,不提供 exploit 代码 |
- | 发现 SUID 可利用 | 引用 GTFOBins 技术,不直接执行 |
- | WebShell 环境 sudo 需密码 | 跳过,只检测 NOPASSWD 规则 |
- | 容器环境 | 额外检测特权容器和 socket 挂载 |
- | 发现可利用向量 | 立即写入侦察摘要 |
-
- ---
-
- ## Skill 元数据
-
- - riskLevel: `medium`
- - accessMode: `read_only`
- - requiredTools: `CommandTools`, `SuidCapabilityTools`
- - optionalTools: `FileTools`, `UserAccountTools`, `ProcessTools`, `ServiceManagerTools`
- - produces: `privilegeEscalation.linux`, `openQuestions`
- - recommendedNextSkills: `persistence-linux`, `hunt-credentials`, `recon-internal-network`, `detect-container-escape`
- - forbiddenByDefault: 执行实际提权操作、修改系统文件、安装内核模块、写入 cron 任务
+ 输出最多 5 条行动路径矩阵。发现凭据入口时建议 `hunt-credentials`;用户明确要求并已启用时,获得所需权限后可交接 `persistence-linux`。不要声称本 skill 已完成提权。