kabiri-labs/rcpayloadgen
GitHub: kabiri-labs/rcpayloadgen
面向授权安全测试的上下文感知 RCE Payload 批量生成工具,支持多环境、多编码与检测友好模式。
Stars: 11 | Forks: 2
# RCEPayloadGen - 高级 RCE Payload 生成器
RCEPayloadGen 是一款综合性的远程代码执行 (RCE) payload 生成器,专为渗透测试人员、安全研究人员和红队成员设计。该工具可生成各种 RCE payload,适用于不同的环境、上下文、编码方法和特定的执行 sink。
## 功能
- **多环境支持**:为 Unix、Windows、Node.js、Python、PHP、Java、.NET、Ruby、Perl、Go、容器化的 Docker 工作负载以及 Kubernetes 集群生成 payload
- **上下文感知**:针对不同的注入上下文(HTML、JavaScript、SQL 等)创建 payload
- **针对特定 Sink 的 Payload**:针对代码执行 sink 具有精细的粒度,包括 OS 命令、模板引擎 (SSTI) 和特定语言的执行方法,并按原样输出,以确保每个代码片段在其 sink 中保持语法有效性
- **纯可执行编码**:Base64、Hex、单/双重 URL 编码以及多阶段 Base64 链 —— 每个变体要么可以直接运行,要么是有文档说明的解码并执行的数据块。已经移除了会产生无法运行输出的转换(ROT13、XOR/分块重组、字节拼接),以确保操作人员永远不会复制无效的 payload
- **模块化模板**:Payload 基础存储在可编辑的 JSON/YAML 模板中,团队无需修改 Python 源代码即可扩展覆盖范围
- **可定制化**:通过各种命令行选项微调 payload 生成
- **检测友好模式**:使用 `--detection-only` 快速生成用于安全扫描的良性 Canary payload
- **无重复项**:智能重复检测,避免生成冗余的 payload
- **生产就绪**:具备健壮的错误处理、日志记录和性能优化
## 安装
```
# 克隆 repository
git clone https://github.com/kabiri-labs/rcpayloadgen.git
cd rcpayloadgen
# 安装 dependencies(除了标准 Python libraries 外不需要其他依赖)
# 需要 Python 3.6+
```
## 测试
该项目附带了一个无依赖的 `unittest` 测试套件,用于锁定 payload 的唯一性、纯可执行编码策略、安全过滤以及检测模式:
```
python -m unittest discover -s tests
```
## 用法
```
python rce_payload_gen.py [OPTIONS]
```
### 基础示例
使用默认设置生成所有 payload(需要确认漏洞利用授权):
```
python rce_payload_gen.py --acknowledge-consent
```
仅生成带有 Base64 编码的 Unix 反向 Shell:
```
python rce_payload_gen.py --categories reverse_shells --environments unix --encodings base64
```
为 PHP 上下文生成最多 1000 个 payload:
```
python rce_payload_gen.py --contexts php --max-payloads 1000 --acknowledge-consent
```
生成良性 payload 以及带有指标的元数据附属文件:
```
python rce_payload_gen.py --detection-only --include-metadata --output detection.txt
```
使用自定义的攻击者 IP 和域名:
```
python rce_payload_gen.py --attacker-ip 10.0.0.1 --attacker-domain evil.com --acknowledge-consent
```
在带有良性 payload 的安全检测模式下运行:
```
python rce_payload_gen.py --detection-only
```
### 完整选项
| 选项 | 描述 | 默认值 |
|--------|-------------|---------|
| `-o, --output` | 输出文件路径 | `rce_payloads.txt` |
| `--attacker-ip` | 用于反向 Shell 的攻击者 IP | `192.168.1.100` |
| `--attacker-domain` | 用于下载 payload 的攻击者域名 | `attacker.com` |
| `--max-payloads` | 要生成的最大 payload 数量 | 无限制 |
| `--contexts` | 要生成的上下文(空格分隔) | 所有上下文 |
| `--categories` | 要生成的类别(空格分隔) | 所有类别 |
| `--encodings` | 要应用的编码方法(空格分隔) | 所有编码 |
| `--environments` | 要生成的环境(空格分隔) | 所有环境 |
| `--template-file` | JSON/YAML 模板包的路径 | `templates/payloads.json` |
| `--detection-only` | 生成用于验证扫描的良性 payload | 禁用 |
| `--output-format` | 将 payload 输出为 `text` 或 `jsonl` 记录 | `text` |
| `--include-metadata` | 输出指标、安全级别和说明 | 禁用 |
| `--max-safety` | 要包含的最高安全级别(`safe`、`intrusive`、`stateful`) | 检测模式下为 `safe`,其他情况为 `intrusive` |
| `--include-blocking` | 包含阻塞型或基于时间的探测 | 禁用 |
| `--acknowledge-consent` | 创建漏洞利用 payload 前必须进行的确认 | 禁用 |
| `--watermark` | 将可追踪的水印 token 嵌入到每个漏洞利用 payload 中(无论是否启用,都会进行审计日志记录) | 禁用 |
### 可用上下文
- `raw` - 无包装器;最适合语言原生代码片段和直接命令探测
- `html` - HTML 上下文
- `attribute` - HTML 属性上下文
- `javascript` - JavaScript 上下文
- `sql` - SQL 注入上下文
- `php` - PHP 代码上下文
- `unix_shell` - Unix Shell 上下文
- `windows_cmd` - Windows 命令上下文
- `powershell` - PowerShell 上下文
### 可用类别
- `basic_enum` - 基础枚举命令
- `file_operations` - 文件系统操作
- `network_operations` - 网络侦察
- `code_execution` - 特定语言的代码执行(具有 sink 级别的粒度)
- `download_execute` - 下载并执行 payload
- `reverse_shells` - 反向 Shell payload
- `credential_access` - 凭据发现和机密收集原语
- `privilege_escalation` - 针对 OS 和容器目标的本地权限提升检查
- `persistence` - 创建或模拟常见持久化机制的 payload
- `cloud_metadata` - 从本地或容器化据点收集云服务元数据
- `database_enumeration` - 数据库发现和 schema 检查辅助工具
- `lateral_movement` - 后渗透横向移动原语
### 可用环境
- `unix` - 类 Unix 系统
- `windows` - Windows 系统
- `nodejs` - Node.js 环境
- `python` - Python 环境
- `php` - PHP 环境
- `java` - Java/JVM 环境
- `dotnet` - .NET 环境
- `ruby` - Ruby 环境
- `perl` - Perl 环境
- `go` - Go 环境
- `docker` - 针对 Docker 运行时的容器逃逸研究
- `kubernetes` - 针对 Kubernetes 工作负载和控制平面的 payload
### 可用编码方法
每种编码都受限于输出操作人员能够切实针对目标运行的内容。需要在接收端使用解码器的编码(Base64/Hex 链)会在元数据中标记为“需要解码并执行的路径”说明。
- `none` - 无编码
- `url_encode` - URL 编码(适用于在到达 sink 前进行 URL 解码的通道)
- `double_url_encode` - 双重 URL 编码
- `base64` - Base64 编码(与 `base64 -d | sh` 风格的解码包装器配合使用)
- `hex` - 十六进制编码(与 Hex 解码包装器配合使用)
- `random_case` - 随机大小写变体,**仅**针对不区分大小写的运行器(Windows `cmd`、PowerShell、SQL)输出;在其他地方会被抑制,因为这会破坏命令
- `base64_then_url` - 多阶段 Base64 加上 URL 编码
- `double_base64` - 嵌套的 Base64 编码层
## Payload 类型
RCEPayloadGen 可跨多个类别生成 payload:
1. **基础枚举**:常见的系统侦察命令
2. **文件操作**:文件系统交互和敏感文件访问
3. **网络操作**:网络配置和发现
4. **代码执行**:具有 sink 级别详细信息的特定语言代码执行模式
5. **下载并执行**:下载并执行远程代码的 payload
6. **反向 Shell**:适用于各种环境的全面反向 Shell payload
7. **凭据访问**:系统性地收集凭据、token 和配置机密
8. **权限提升**:涵盖 sudo、服务和特定平台权限提升侦察
9. **持久化**:在 Unix 和 Windows 主机上模拟真实世界持久化技术的命令模式
10. **云元数据发现**:从多个视角探测公有云实例元数据服务
11. **数据库枚举**:枚举 SQL/NoSQL 后端并导出有用的 schema 信息
12. **横向移动**:验证远程管理通道(SSH、WinRM、PsExec 等)以进行扩展
13. **容器逃逸研究**:面向 Docker 和 Kubernetes 的 payload,用于验证容器平台的安全加固
## 详细的代码执行 Sink
对于 `code_execution` 类别,payload 会在特定 sink 级别生成并按原样输出,因此每个代码片段都针对其目标 sink 保持语法有效(编码变体会单独应用并在元数据中标记)。以下是每个环境支持的 sink 列表:
### Node.js (`nodejs`)
- `child_process_exec`: 使用 child_process 模块的执行
- `pug_ssti`: Pug 模板引擎 SSTI
- `ejs_ssti`: EJS 模板引擎 SSTI
- `handlebars_ssti`: Handlebars 模板引擎 SSTI
### Python (`python`)
- `os_system`: os.system 执行
- `subprocess`: subprocess 模块执行
- `jinja2_ssti`: Jinja2 模板引擎 SSTI
### PHP (`php`)
- `exec_system`: system/exec/shell_exec/passthru/eval/preg_replace 执行
### Java (`java`)
- `runtime_exec`: Runtime.exec 和 ProcessBuilder
- `freemarker_ssti`: Freemarker 模板引擎 SSTI
- `velocity_ssti`: Velocity 模板引擎 SSTI
- `thymeleaf_ssti`: Thymeleaf 模板引擎 SSTI
### .NET (`dotnet`)
- `process_start`: Process.Start 执行
### Ruby (`ruby`)
- `kernel_system`: system/backticks/exec 执行
- `erb_ssti`: ERB 模板引擎 SSTI
### Perl (`perl`)
- `system_backticks`: system/backticks/exec 执行
### Go (`go`)
- `os_exec`: exec.Command 执行
## 日志与道德控制
- 详细的执行日志存储在 `rce_generator.log` 中,包含时间戳和严重级别,用于监控。
- 漏洞利用运行始终会在 `exploit_audit.log` 中写入一条带有唯一 token 的审计记录,无论是否嵌入了水印。
- 检测模式生成适用于授权扫描和验证活动的安全 Canary payload。
- 当启用 `--include-metadata` 时,纯文本输出会将原始 payload 保留在主文件中,并为每个 payload 写入一个 `.meta.jsonl` 附属文件,其中包含预期指标、运行器、安全级别和 lint 说明。
- Payload 内的水印是通过 `--watermark` **可选开启**的,因此默认的漏洞利用输出保持整洁且可随时复制粘贴。启用后,payload 将带有引用审计 token 的嵌入式注释/命令,以防止滥用。
## 道德使用
此工具适用于:
- 经适当授权的渗透测试
- 安全研究与教育
- 防御性安全培训
- 安全工具开发
**严禁未经明确许可就针对系统使用此工具。** 未经授权的测试是非法且不道德的。
## 许可证
该项目基于 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。
## 免责声明
此工具仅供教育和授权测试目的提供。开发者对任何因滥用本程序而造成的损坏不承担责任。
标签:DNS 反向解析, Homebrew安装, Payload生成, Python, 文档结构分析, 无后门, 逆向工具