4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / README_zh.md MD
# 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
    ```

## 免责声明

本工具仅用于教育和授权安全测试目的。未经系统所有者明确许可,请勿在任何系统上使用。作者对因滥用或使用此工具造成的任何损害概不负责。