README.md
Rendering markdown...
# Ollama CVE-2024-39722 利用工具
该工具旨在利用 CVE-2024-39722,这是 Ollama 版本 <= 0.1.45 中的一个模型存在性泄露漏洞。它允许用户检查 Ollama 服务器是否存在漏洞,并尝试发现服务器上存在的模型。此外,它还可以爬取 Ollama 官方模型库以生成用于测试的潜在模型列表。
## 漏洞详情
* **CVE ID:** CVE-2024-39722
* **描述:** Ollama 版本 <= 0.1.45 存在模型存在性泄露漏洞。通过向 `/api/push` 端点发送特制请求,攻击者可以确定特定模型(包括不在公共库中的自定义模型)是否存在于服务器上。
* **受影响版本:** <= 0.1.45
* **CVSS 评分:** 7.5 (高危)
## 功能特性
* **爬取 Ollama 模型库:** 从 Ollama 官方库 (`https://ollama.com/library`) 获取模型列表。
* **版本检查:** 检查目标 Ollama 服务器版本是否存在漏洞。
* **漏洞利用:** 使用已知模型名称列表,尝试发现易受攻击的 Ollama 服务器上存在的模型。
* **多线程利用:** 使用多个线程以加快模型发现速度。
* **结果输出:** 将爬取到的模型和泄露的模型保存到 JSON 文件。
## 环境要求
* Python 3.x
* `requests`
* `lxml`
* `termcolor`
## 安装
1. 克隆仓库或下载脚本 `CVE_2024_39722.py`。
2. 安装所需的 Python 包:
```bash
pip install requests lxml termcolor
```
## 使用方法
```bash
python CVE_2024_39722.py [选项]
```
### 选项
* `-h, --help`: 显示帮助信息并退出。
* `-u URL, --url URL`: 目标 Ollama 服务器 URL (例如: `http://localhost:11434`)。
* `-c, --crawl`: 爬取 Ollama 模型库并将其保存到 `links.json`。
* `-o OUTPUT, --output OUTPUT`: 结果输出文件 (默认: `results.json`)。
* `-t THREADS, --threads THREADS`: 用于漏洞利用的线程数 (默认: 10)。
* `-v, --version-check`: 仅根据版本检查目标 Ollama 服务器是否存在漏洞。
### 示例
1. **显示帮助信息:**
```bash
python CVE_2024_39722.py -h
```
2. **爬取 Ollama 模型库:**
这将从 `https://ollama.com/library` 获取模型名称并将其保存到 `links.json`。
```bash
python CVE_2024_39722.py --crawl
```
3. **检查目标服务器是否存在漏洞:**
```bash
python CVE_2024_39722.py -u http://localhost:11434 --version-check
```
4. **利用目标服务器:**
这将首先检查服务器的版本。如果存在漏洞,它将使用 `links.json` (如果不存在则爬取,或使用已有的文件) 来测试模型是否存在。
```bash
python CVE_2024_39722.py -u http://localhost:11434
```
5. **使用特定线程数进行利用:**
```bash
python CVE_2024_39722.py -u http://localhost:11434 -t 20
```
6. **利用并将结果保存到自定义文件:**
```bash
python CVE_2024_39722.py -u http://localhost:11434 -o discovered_models.json
```
## 免责声明
本工具仅用于教育和授权安全测试目的。未经系统所有者明确许可,请勿在任何系统上使用。作者对因滥用或使用此工具造成的任何损害概不负责。