daniyalnasir-root/curl2nuclei
GitHub: daniyalnasir-root/curl2nuclei
将捕获的 curl 命令自动转换为 nuclei 可执行的 YAML 检测模板,填补临时请求与可复用检测之间的空白。
Stars: 0 | Forks: 0
# curl2nuclei
将捕获的 curl 命令转换为可运行的 [nuclei](https://github.com/projectdiscovery/nuclei) 检测模板。
你发现一个参数看起来不对劲。你用 curl 测试一次,查看响应后继续前进。`curl2nuclei` 接收这条一次性 curl 命令,选择一个漏洞类别,并立即为你返回一个 YAML 模板供你扫描。输出是工件本身,而不是关于工件的报告。
[](https://www.python.org/)
[](LICENSE)
[](#)
## 概述
这一功能填补的空白:手动写的 curl 是临时性的,而 nuclei 模板可在整个渗透过程中复用。手动将请求体、头部、Cookie 和匹配器重新键入到 YAML 中是阻碍人们执行此操作的摩擦点。本脚本读取 curl 命令,将请求原样放入 `raw:` 块中,并附加针对各类漏洞调校的 payload + 匹配器。
内置六类:`sqli`、`ssrf`、`xss`、`redirect`、`rce`、`time-based`。OOB 类(`ssrf`、`rce`)会在 payload 中注入 `{{interactsh-url}}` 并添加 `interactsh_protocol` 匹配器;内联类使用针对该类别优化的单词/正则匹配器。输出末尾包含一个带边框的“下一步”面板,显示字面意义上的 `nuclei -t ... -u ...` 命令——复制、粘贴、运行即可。
## 功能特性
解析器能处理从 Burp 的 *Copy as cURL* 和 Chrome DevTools 获取的真实世界 curl 命令——支持多行转义、`-H`、`-X`、`-d/--data-raw/--data-urlencode`、`--json`、`-b/--cookie`、`-u`、`-A`、`-e` 和 `-G`。捕获的请求会原样落地到 `raw:` 中,因此 Cookie 和自定义头部会被保留。
- 六种配置文件:`sqli`、`ssrf`、`xss`、`redirect`、`rce`、`time-based`
- `--param name` 指定要模糊化的单个参数(默认模糊化查询和请求体中的每个键)
- 模板会打上 `tags: curl2nuclei,`,便于在批量扫描中过滤
- `--stdout` 模式可直接将 YAML 输出到标准输出,便于导入 Burp BCheck 或其他生成器
- 纯 Python 3.9+ 标准库,无需安装
## 安装
```
git clone https://github.com/daniyalnasir-root/curl2nuclei.git
cd curl2nuclei
python3 cli.py -h
```
## 使用方法
```
# SQLi probe on one query parameter
python3 cli.py \
--curl "curl 'https://httpbin.org/anything?id=1&user=guest'" \
--class sqli --param id --out sqli-id.yaml
nuclei -t sqli-id.yaml -u https://httpbin.org/anything
# SSRF on a body parameter, request copied from Burp (cookie carried through)
python3 cli.py \
--curl @./captured.curl \
--class ssrf --param fetch_url --out ssrf-fetch.yaml
# Pipe to stdout for downstream chaining
python3 cli.py --curl "curl https://x.example/?q=1" --class xss --param q --stdout
```
## 命令行选项
| 标志 | 是否必需 | 描述 |
|------|----------|------|
| `--curl` | 是 | curl 命令字符串,或 `@路径/到/文件` |
| `--class` | 是 | 取值之一:`sqli`、`ssrf`、`xss`、`redirect`、`rce`、`time-based` |
| `--param` | 否 | 要模糊化的单个查询/请求体参数名(默认:所有参数) |
| `--out` | 否 | 输出 YAML 的文件路径(默认 `./.yaml`) |
| `--stdout` | 否 | 仅打印 YAML,不写入文件也不渲染下一步面板 |
## 输出示例
```
$ python3 cli.py --curl "curl 'https://httpbin.org/anything?id=1&user=guest'" \
--class sqli --param id --out sqli-httpbin.yaml
id: sqli-httpbin-org-anything
info:
name: SQLI probe on httpbin.org/anything
author: curl2nuclei
severity: high
...
http:
- raw:
- |
GET /anything?id={{payload}}&user=guest HTTP/1.1
Host: httpbin.org
payloads:
payload:
- "'"
- "' OR '1'='1"
- "1 AND SLEEP(7)--"
...
┌─ next step ────────────────────────────────────────────────────┐
│ nuclei -t sqli-httpbin.yaml -u https://httpbin.org/anything │
│ │
│ written: sqli-httpbin.yaml │
└────────────────────────────────────────────────────────────────┘
```
模板可通过 `nuclei -validate` 校验。完整输出示例位于 [`examples/`](examples/)。
## 法律声明
本工具仅供授权的安全测试和教学使用。
请仅针对你拥有或已获得明确书面许可的系统运行该工具。
作者不对任何误用承担责任。未经授权的使用可能违反
当地、州或联邦法律。
## 许可证
MIT,详见 [LICENSE](LICENSE)。
标签:API测试, Burp Suite, curl, DevSecOps, DNS枚举, HTTP请求, Linux取证, nuclei, Python, Python3.9, SSRF, TIP, Web安全, XML 请求, XSS, 上游代理, 二进制发布, 交互式攻击, 参数模糊, 命令执行, 安全开发, 安全测试, 开源工具, 攻击性安全, 无后门, 时间盲注, 模板生成, 活跃项目, 漏洞情报, 网络安全, 网络安全工具, 网络调试, 自动化, 蓝队分析, 逆向工具, 重定向, 隐私保护