用途
hunt-rce 是一个 RCE(远程代码执行)漏洞猎捕技能,基于 67 份公开漏洞赏金报告构建,用于在任意目标上开展 RCE 排查工作时提供系统化思路与验证手法。
主要能力
自动化测试优先级:Content-Type
技能指出 Content-Type 是命令注入的头号静默失败模式。传统 Web 表单使用 Content-Type: application/x-www-form-urlencoded;如果向表单接口发送 JSON 体(如 {"host":"127.0.0.1;id"}),服务端读取 request.form['host'] 时得到空值,应用照常执行且无注入,返回看似正常的 200 响应,从而产生无任何迹象的假阴性。规则是:页面有 HTML 表单(<form method="POST">)就用表单编码;路径是 /api/... 或响应是 JSON 就用 JSON。
命令注入操作符(按常见程度排序):
- value;id(Unix 分号,最常见)
- value|id(管道)
- value&&id(AND)
- value$(id)(子 shell)
- value
id(反引号)
证明方式:响应体中出现 OS 命令输出(如 uid=N(username) gid=...)即确认代码执行。输出可能被 HTML 包裹,仍然算数。若响应整体正常(200、预期内容)但附带了命令输出,即确认利用成功。
高价值目标(Crown Jewel Targets)
RCE 因赋予攻击者对目标基础设施的直接执行控制而在漏洞赏金中赔付最高。高价值目标包括:
- 企业服务器产品(GitHub Enterprise Server、自托管 GitLab):从低权限控制台角色到 root SSH 的提权链通常评为严重/高危
- 供应链/包注册表:针对 npm、PyPI 等的依赖混淆攻击在各大项目中均达严重级别
- 云原生基础设施:暴露的 Kubernetes API 服务器、ingress 控制器、配置错误的 CI/CD 流水线
- 移动应用后端与 OAuth 流程:服务端处理攻击者可控数据并进入执行上下文的位置
- 管理/管理控制台:配置面板中的模板注入可用单个载荷直达 root
为何此类赔付最高:影响面是基础设施级而非用户级;PoC 无歧义(shell 输出不可否认);修复需要架构改动而非仅打补丁;项目无法承受 RCE 的假阴性。
攻击面信号
URL 模式:/management-console/、/admin/settings/、/api/v*/exec、/api/v*/run、/webhook/、/_internal/、/import?url=、/render?template=、/preview?format=
响应头/技术栈信号:
- X-Powered-By: Express(Node.js,npm 依赖面)
- X-Powered-By: Phusion Passenger
- Server: nginx (ingress-nginx)(Kubernetes ingress,path 字段注入)
- X-Runtime: Ruby(Rails ActiveStorage、RDoc、REXML 攻击面)
- Content-Type: application/yaml(YAML 解析器 SnakeYAML、Psych,反序列化)
- X-GitHub-Enterprise-Version(GHAS,nomad 模板、collectd、syslog-ng 注入)
JavaScript/前端信号:fetch('/api/exec', ...)、eval(userInput)、new Function(userInput)、document.write(unsafeData)、window.location = userControlled(URL scheme 绕过导致 JS 执行)。
技术栈信号与 RCE 向量:nomad 在配置 UI 中(模板注入 {{ ... }});syslog-ng 配置可编辑(配置注入 program() 目的地);collectd 配置可编辑(插件 exec 注入);classpath 中的 SnakeYAML(!!javax.script.ScriptEngineManager [...]);npm package.json 内部 scope(依赖混淆);ingress-nginx 注解(path 字段正则绕过)。
使用方式(逐步方法论)
- 先映射执行上下文:测试载荷前,识别所有用户可控输入触及执行层的位置——模板引擎、shell 命令、YAML 解析器、用于操作的文件路径、包解析、配置文件。
- 枚举管理/管理接口:爬取 /management-console、/admin、/_internal、/setup、/config。这些面权限低、特权高——GHES 集群从一个控制台角色产出了 6 个独立 RCE。
- 在每个配置字段检查模板注入:在任何接受自由格式配置的管理 UI(日志目的地、通知格式、代理设置)提交 {{77}}、${77}、<%= 7*7 %>,在响应、日志或 DNS 回调中查找 49。
- 测试 YAML/XML/序列化输入是否可执行代码(详见原文载荷)。
- 猎捕依赖混淆:对 JS 包、错误消息、公开仓库 package.json 中可见的每个内部包名,在公共注册表注册更高版本包并指向 canary 回调。
- 检查文件路径操作是否存在遍历→执行。
- 审计 Kubernetes/云原生面。
- 测试 OAuth 重定向 URI 与 URL scheme 处理器。
- 使用带外回调验证(Burp Collaborator、interactsh、canarytokens.org DNS token),盲 RCE 在后端处理器中很常见。
- 串联权限:低危配置错误(编辑器角色、CSRF、路径穿越)加 RCE 原语等于严重级。
载荷与检测模式
- 模板注入探测(通用 polyglot,跨 Jinja2、Twig、Freemarker、Pebble、Velocity);Nomad 模板注入(Go text/template)
- Apache HTTP Server alias 路径穿越(CVE-2021-41773 / CVE-2021-42013):区分仅有文件读取的 alias 与启用 CGI 的 alias,并给出指纹、文件读取测试与 RCE 测试命令
- Spring Cloud Function SpEL 注入(CVE-2022-22963):检测与利用(新版形式可避免 shell 引号问题)
- SnakeYAML RCE Gadget、Ruby YAML / rdoc_options RCE
- 依赖混淆检测、ingress-nginx 路径注入、Kubernetes 暴露 API 检查
- 带外 RCE 确认(通过 DNS)、ActiveStorage 路径穿越→RCE
- Args4j @ 前缀文件展开(Jenkins CVE-2024-23897 家族):检测与测试方式,以及 JENKINS_HOME 确认后的关键文件列表
源码审查的 grep 模式、常见根因(配置即代码净化不足、特权上下文中的模板引擎、依赖混淆/命名空间抢注、不安全反序列化、路径穿越、假定低权限角色无法触及执行上下文、面向基础设施字段缺少输入校验)。
绕过技巧
- 绕过 shell 元字符过滤($IFS、{cat,/etc/passwd}、十六进制编码、printf、换行注入)
- 绕过 URL scheme 允许列表(大小写变异、HTML 实体、void 包装、intent://、data:)
- 绕过 YAML safe_load/类型限制、npm scope 限制、路径穿越过滤
适用场景
适用于漏洞赏金与安全测试场景,帮助安全人员在有明确技术栈信号或管理接口的目标上系统定位与验证 RCE。
限制
原文未提供该技能的具体安装命令、运行环境依赖、费用、价格或平台支持信息,暂未提供。