核心用法
decode-exec 是一个 Python 编写的远程代码执行工具,通过 HTTP GET 请求获取目标 URL 内容,根据响应头中的 x-decode 字段指示的编码方式(支持 base64、rot13、hex、uuencode、morse 等 12 种格式及链式组合),自动解码后通过 eval() 执行解码后的 Python 代码。
使用命令:python3 1.py <url>
显著优点
- 多编码支持:覆盖 base16/32/64/85、hex、rot13、URL、HTML 实体、UUencode、quoted-printable、binary、morse 等常见编码方式
- 链式解码灵活:支持逗号分隔的多层解码,如
base64,rot13表示先 base64 再 rot13 - 依赖轻量:仅依赖 Python 3 标准库,可选 requests,urllib 作为 fallback
- 服务端驱动:编码逻辑由服务端通过 header 控制,客户端无需预设
潜在缺点与局限性
- 致命安全风险:使用
eval()执行远程获取的任意代码,无沙箱隔离,属于典型的 Remote Code Execution (RCE) 攻击面 - 无身份验证:协议设计未体现任何签名、HMAC 或 TLS 证书校验机制
- 供应链攻击窗口:若服务端被劫持,所有客户端将立即执行恶意代码
- 调试困难:链式解码出错时难以定位具体环节
- 无输出捕获:示例未展示执行结果的处理方式
适合人群
- 红队/渗透测试人员:用于 C2 载荷投递、编码混淆绕过检测
- 安全研究员:研究多态编码 payload 传输机制
- 教育场景:演示编码链与动态代码执行原理(需隔离环境)
绝对不适合:生产系统、自动化 CI/CD 管道、任何不可信网络环境下的常规使用。
常规风险
| 风险类型 | 严重程度 | 说明 |
|---------|---------|------|
| RCE | **Critical** | `eval()` 执行未经验证的远程代码 |
| 供应链攻击 | High | 服务端劫持即导致全局沦陷 |
| 中间人攻击 | High | 若无 TLS,payload 可被替换 |
| 编码逃逸 | Medium | 多层解码可能绕过静态检测 |
| 依赖投毒 | Medium | `requests` 若被替换为恶意版本 |
缓解建议:仅在离线隔离环境运行,禁用网络出口,使用 exec 替代 eval 并配合 AST 白名单(但原工具未实现)。