CommandRunner/Nuclei_CVE_Generator
GitHub: CommandRunner/Nuclei_CVE_Generator
一个基于 Flask 的 API 服务,结合 Exploit-DB 与 GitHub 上的 PoC 数据,通过 Claude 大模型自动生成 Nuclei YAML 模板。
Stars: 1 | Forks: 0
# Nuclei CVE 生成器
这是一个 Flask API,利用来自 Exploit-DB 和 GitHub 的真实 PoC 数据,通过 Claude AI 自动为 CVE 生成 [Nuclei](https://github.com/projectdiscovery/nuclei) 模板。
## 工作原理
1. 您向 `/generate` 端点发送一个 CVE ID
2. 它在 **Exploit-DB** 中搜索匹配的漏洞利用程序并获取原始漏洞利用代码
3. 它在 **GitHub** 中搜索 PoC 仓库并获取其 README 内容
4. 它根据真实的 PoC 数据(HTTP 请求、payload、复现步骤)构建提示词
5. 它将提示词发送给 Claude 并返回可直接使用的 Nuclei YAML 模板
## 配置选项
- **选项 A — AWS EC2 上的 Bedrock**(无需 API 密钥,使用 IAM 角色)
- **选项 B — 本地使用 Anthropic API**(更简单,只需一个 API 密钥)
## 选项 A:在 AWS EC2 上部署
### 1. 启用 Bedrock 模型访问权限
在启动任何内容之前,请确保在您的 AWS 账户中启用了 Claude 模型:
1. 前往 [AWS Bedrock 控制台](https://console.aws.amazon.com/bedrock/home?region=us-east-1#/modelaccess)
2. 点击 **Modify model access**
3. 在 Anthropic 下找到 **Claude 3.5 Haiku** 并启用它
4. 等待状态显示 **Access granted**(通常是即时的)
### 2. 为 EC2 创建 IAM 角色
您的 EC2 实例需要调用 Bedrock 的权限。最安全的方法是使用 IAM 角色 —— 无需硬编码凭证。
1. 前往 **IAM → Roles → Create role**
2. 选择 **AWS service** → **EC2** → 下一步
3. 搜索并附加策略 **AmazonBedrockFullAccess**(或创建一个仅限于 `bedrock:InvokeModel` 的自定义策略)
4. 为角色命名,例如 `nuclei-cve-bedrock-role`,然后创建它
### 3. 启动 EC2 实例
1. 前往 **EC2 → Launch Instance**
2. 选择 **Ubuntu Server 24.04 LTS**(符合免费套餐资格)
3. 实例类型:个人使用 **t2.micro** 即可,如果预期负载较高建议选 **t3.small**
4. **Key pair**:创建或选择一个现有的 —— 您需要它来进行 SSH 登录
5. **Network settings**:
- 允许来自您 IP 的 **SSH (端口 22)**
- 为来自您 IP(或 `0.0.0.0/0`,如果您希望公开访问)的 **端口 5000** 添加自定义 TCP 规则
6. 在 **Advanced details → IAM instance profile** 下:选择您在第 2 步中创建的角色
7. 启动实例
### 4. 连接到实例
```
ssh -i /path/to/your-key.pem ubuntu@
```
如果密钥出现权限错误:
```
chmod 400 /path/to/your-key.pem
```
### 5. 设置环境
```
# 更新 packages
sudo apt update && sudo apt upgrade -y
# 安装 Python 和 pip
sudo apt install python3 python3-pip python3-venv git -y
# Clone repo
git clone https://github.com/CommandRunner/Nuclei_CVE_Generator
cd Nuclei_CVE_Generator
# 创建并激活 virtual environment
python3 -m venv venv
source venv/bin/activate
# 安装 dependencies
pip install -r requirements.txt
```
### 6. 验证 AWS 访问权限
由于 EC2 实例已附加 IAM 角色,因此您不需要存储任何凭证。验证其是否正常工作:
```
sudo apt install awscli -y
aws sts get-caller-identity
```
您应该会看到您的账户 ID 和角色 ARN。如果此步骤成功,Bedrock 调用也将正常工作。
### 7. 运行服务器
```
python main.py
```
API 将在 `http://:5000` 上可用。
### 8. 作为后台服务运行(可选)
```
sudo nano /etc/systemd/system/nuclei-cve.service
```
粘贴以下内容(如有必要请调整路径):
```
[Unit]
Description=Nuclei CVE Generator
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/Nuclei_CVE_Generator
ExecStart=/home/ubuntu/Nuclei_CVE_Generator/venv/bin/python main.py
Restart=always
[Install]
WantedBy=multi-user.target
```
然后启用并启动它:
```
sudo systemctl daemon-reload
sudo systemctl enable nuclei-cve
sudo systemctl start nuclei-cve
sudo systemctl status nuclei-cve
```
查看日志:
```
journalctl -u nuclei-cve -f
```
## 选项 B:本地使用 Anthropic API 运行(无需 AWS)
如果您不想设置 AWS,可以直接用 Anthropic API 代替 Bedrock。
### 1. 获取 Anthropic API 密钥
在 [console.anthropic.com](https://console.anthropic.com) 注册并创建一个 API 密钥。
### 2. 安装 Anthropic SDK
```
pip install anthropic
```
或者将其添加到 `requirements.txt`:
```
anthropic>=0.25.0
```
### 3. 修改 `main.py`
将 `call_bedrock` 函数替换为以下内容:
```
import anthropic
anthropic_client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
def call_bedrock(prompt):
message = anthropic_client.messages.create(
model="claude-3-5-haiku-20241022",
max_tokens=4096,
temperature=0.2,
messages=[{"role": "user", "content": prompt}]
)
return message.content[0].text
```
您可以删除文件顶部的 `boto3` 导入和 `bedrock` 客户端,因为不再需要它们了。
### 4. 设置您的 API 密钥并运行
```
git clone https://github.com/CommandRunner/Nuclei_CVE_Generator
cd Nuclei_CVE_Generator
pip install -r requirements.txt anthropic
export ANTHROPIC_API_KEY=your_api_key_here
python main.py
```
## 使用方法
**生成模板:**
```
curl -X POST http://localhost:5000/generate \
-H "Content-Type: application/json" \
-d '{"cve_id": "CVE-2021-44228"}'
```
**响应:**
```
{
"template": "id: CVE-2021-44228\ninfo:\n name: ...",
"sources": {
"exploitdb": [{"id": "...", "title": "...", "url": "..."}],
"github": [{"repo": "...", "stars": 100, "url": "..."}]
}
}
```
**提高 GitHub API 速率限制(可选):**
```
export GITHUB_TOKEN=your_github_token
```
无 Token:10 次请求/分钟。有 Token:30 次请求/分钟。
**健康检查:**
```
curl http://localhost:5000/health
```
## 安全提示
- 仅在经授权的目标上使用。
- 生成的模板由 AI 生成 —— 在针对生产系统运行之前,请务必进行审查。
- 如果公开暴露端口 5000,请考虑将其置于具有身份验证功能的反向代理(nginx)之后。
标签:AWS Bedrock, CISA项目, Claude AI, CVE, DLL 劫持, Exploit-DB, Flask, Google, Nuclei, PoC, Python, YAML, 人工智能, 代码生成, 域名收集, 大语言模型, 安全库, 数字签名, 无后门, 暴力破解, 模板生成, 渗透测试工具, 用户模式Hook绕过, 结构化查询, 网络安全, 网络测绘, 自动化安全, 逆向工具, 隐私保护