RaniaMathlouthi/cve-poc-scraper-
GitHub: RaniaMathlouthi/cve-poc-scraper-
一个基于 Selenium 的自动化爬虫,从 CVE 记录的参考链接中批量抓取并提取漏洞 PoC(概念验证)代码的实际链接。
Stars: 0 | Forks: 0
# CVE PoC Scraper
一个用于从 2026 年的 CVE 记录中的参考链接里抓取 PoC(Proof of Concept,概念验证)链接的爬虫。
## 实现步骤
### 1-2. 数据获取与过滤
2026 年的 CVE 数据从代码库的 releases 中下载:https://github.com/fkie-cad/nvd-json-data-feeds,然后进行解压。每条 CVE 都包含一个 `references` 列表,其中每个参考项都有一个 `tags` 字段。仅保留至少包含一个标记为 `"Exploit"` 的参考链接的 CVE,并将其限制为 100 条,以满足练习的约束条件(`fetch_and_filter.py`)。
### 3-4. 抓取与提取 PoC
对于每个 "Exploit" 参考链接,一个 Selenium 爬虫(headless 浏览器)会加载该页面,并从中提取可能的 PoC 链接(`scraper.py`)。
通过对部分参考链接样本的分析,我们识别出了多种提取模式,并按以下顺序应用:
1. **直接链接**:如果参考 URL 已经直接指向 `github.com` 或 `gitlab.com`(如 issue、blob、repo 等),则将其视为 PoC 本身——无需再抓取其页面内容。
2. **精确代码(huntr.com 及类似网站)**:在页面中搜索 `github.com/.../blob/...` 链接,这些链接通常指向与漏洞相关的确切源代码。
3. **Bugzilla**(`bugzilla.redhat.com`、`bugzilla.mozilla.org`、`sourceware.org`):搜索 `attachment.cgi` 链接,这些链接对应于附件(通常是 PoC 或补丁)。
4. **通用模式**:在页面中搜索任何有用的 GitHub/GitLab 链接,同时过滤掉干扰信息(如菜单、页脚、这两个平台的营销页面)。
5. **兜底策略**:如果没有匹配到任何模式,则返回参考 URL 本身(适用于那些仅通过纯文本描述漏洞利用而没有包含外部链接的安全公告,例如 redguard.ch)。
这样做的目的是找到一套可复用的逻辑,而非覆盖 100% 的边缘情况,因此这些模式并不详尽,但能覆盖在 100 条 CVE 测试样本中遇到的绝大多数网站。
### 5. 容器化
本项目被打包在一个基于 `python:3.11-slim` 的 Docker 镜像(`Dockerfile`)中,并安装了 Google Chrome 供 Selenium 使用。在容器启动时,`main.py` 会按顺序自动执行整个流水线:下载 → 过滤 → 抓取 → 提取 → 导出。
## 项目结构
cve-poc-scraper/
├── Dockerfile
├── requirements.txt
├── fetch_and_filter.py # 步骤 1-2:下载 + 过滤
├── scraper.py # 步骤 3-4:抓取 + 提取 PoC
├── main.py # 完整流水线的入口点
├── analyze_patterns.py # 用于识别提取模式的分析脚本
├── CVE-with-exploit.json # 过滤结果(100 条 CVE)
└── scrape_results.json # 最终结果:CVE -> PoC 链接
## 运行项目
### 使用 Docker(推荐)
```bash
docker build -t cve-poc-scraper .
docker run -v ${PWD}:/app cve-poc-scraper
```
### 本地运行(不使用 Docker)
```bash
pip install -r requirements.txt
python main.py
```
## 已知局限性
- 某些网站(如 redguard.ch 等纯文本格式的安全公告)不包含可直接利用的 PoC 链接;在此情况下将触发兜底策略,直接返回参考 URL。
- 通用模式(步骤 4)在处理初始样本中未测试过的平台时,偶尔可能会引入干扰信息。
- 抓取过程依赖于 `time.sleep(1)` 来为页面加载预留时间;某些加载较慢的网站可能需要更长的延迟。
标签:BeEF, CVE, PoC收集, Selenium, XSS, 安全, 数字签名, 漏洞情报, 爬虫, 请求拦截, 超时处理, 逆向工具