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, 文档结构分析, 无后门, 逆向工具