Share
## https://sploitus.com/exploit?id=9AE1A07E-28AB-5F58-B5A5-DD9FADF03AEB
[English](./README.md) | 中文

# Vite Dev Server Vulnerability Scanner

[![Python Version](https://img.shields.io/badge/python-3.6%2B-blue)](https://www.python.org/)
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
[![FOFA](https://img.shields.io/badge/FOFA-API-orange)](https://fofa.info/)


一个用于扫描 Vite 开发服务器漏洞的自动化工具。该工具利用 FOFA API 收集潜在目标,并自动检测是否存在特定漏洞。

## 漏洞介绍

### CVE-2025-30208
- 漏洞编号:CVE-2025-30208
- 漏洞名称:Vite 开发服务器未授权访问
- 漏洞描述:Vite 开发服务器存在未授权访问漏洞,攻击者可以通过特定的 URL 访问敏感信息。
- 漏洞影响:Vite 版本 >=6.2.0, <=6.2.2,>=6.1.0, <=6.1.1,>=6.0.0, <=6.0.11,>=5.0.0, <=5.4.14,<=4.5.9
- 说人话:`server.fs.deny` 是 Vite 开发服务器的一个配置选项,用于限制对服务器文件系统的访问。该选项允许开发者设置一个正则表达式数组,用来阻止对特定文件的访问。这是一个重要的安全特性,旨在防止未经授权访问服务器上的敏感文件。这个机制本应限制对 Vite 允许列表之外文件的访问,但可以通过添加 `?raw??` 或 `?import&raw??` 到 URL 来绕过此限制。如果目标文件存在,则可以直接获取其内容。导致以下可能的安全风险:
  - 读取服务器上的任意文件
  - 访问系统配置文件
  - 获取应用程序敏感信息
  - 探测服务器目录结构

### CVE-2025-31125
- 漏洞编号:CVE-2025-31125
- 漏洞名称:Vite 开发服务器通过导入机制实现任意文件读取
- 漏洞描述:Vite 开发服务器存在通过导入机制实现任意文件读取的漏洞,攻击者可以利用该漏洞读取服务器上的敏感文件。
- 漏洞影响:Vite 版本 >=6.2.0, <=6.2.2,>=6.1.0, <=6.1.1,>=6.0.0, <=6.0.11,>=5.0.0, <=5.4.14,<=4.5.9
- 说人话:该漏洞存在于 Vite 开发服务器的导入机制中。攻击者可以通过在 URL 后添加 `?import&?inline=1.wasm?init` 来绕过文件访问限制。这允许攻击者读取服务器上的任意文件,包括:
  - 系统文件(如 Linux 上的 /etc/passwd,Windows 上的 C:/Windows/win.ini)
  - 应用程序配置文件
  - 源代码文件
  - 数据库凭证
  - 环境变量

## 功能特点

- 自动模式
  - 自动从 FOFA 收集目标资产
  - 多线程并发扫描
  - 自动生成 CSV 格式报告
- 手动模式
  - 手动指定目标资产
  - 支持目标批量导入
  - 支持Payload批量导入
  - 多线程并发扫描
  - 从 TXT 文件导入目标资产

## 界面截图 - 自动模式
![image](/images/colorful_main.png)

## 界面截图 - 手动模式
![image](/images/manual1.png)


## 安装要求

- Python 3
- FOFA API 账号

## 配置说明

在项目根目录创建 `.env` 文件,配置以下内容:

```plaintext
FOFA_EMAIL=your_email@example.com
FOFA_KEY=your_fofa_api_key
COUNTRY=CN
```

常见的国家代码:
- CN: 中国
- US: 美国
- AU: 澳大利亚
- DE: 德国
- FR: 法国
- GB: 英国
- IN: 印度
- JP: 日本
- RU: 俄罗斯
- BR: 巴西
- CA: 加拿大
- ID: 印度尼西亚
- MX: 墨西哥
- NZ: 新西兰
- PH: 菲律宾
- SG: 新加坡
- ZA: 南非
- AE: 阿拉伯联合酋长国
- AT: 奥地利
- ......

## 自动模式使用方法

```bash
pip install -r requirements.txt
python main.py
```

## 手动模式使用方法

![image](/images/clihelp.png)

```bash
# 安装依赖
pip install -r requirements.txt

# 查看使用说明
python manual.py -h

usage: manual.py [-h] [-t TARGETS] [-f FILE] [-p PORTS] [-d DICT]

Vite Dev Server Vulnerability Scanner - Manual Mode

options:
  -h, --help            show this help message and exit
  -t TARGETS, --targets TARGETS
                        Target IP addresses, supports single IP, CIDR format (e.g., 192.168.1.0/24) or
                        domain, separate multiple targets with commas
  -f FILE, --file FILE  Load targets from file (one target per line)
  -p PORTS, --ports PORTS
                        Port list, separate with commas (default: 80,443,3000,5173,8080)
  -d DICT, --dict DICT  Custom dictionary file path (format: one path per line, lines starting with #
                        are ignored)

# 扫描192.168.1.0/24 使用默认端口
python manual.py -t 192.168.1.0/24
```

## 配置参数

可在 `main.py` 中调整以下参数:

- `MAX_PAGE`: 最大查询页数(默认:5)
- `RESULTS_PER_PAGE`: 每页结果数(默认:100)
- `TIMEOUT`: 请求超时时间(默认:10秒)
- `MAX_THREADS`: 最大并发线程数(默认:20)

## 输出结果

![image](/images/result.png)

扫描结果将保存在 `vite_vulnerable_targets.csv` 文件中,包含以下字段:

- url: 目标URL
- vulnerable_url: 漏洞URL
- status_code: HTTP状态码
- domain: 域名
- ip: IP地址
- content_preview: 漏洞内容预览(前200个字符)
- vulnerability_type: 漏洞类型(CVE-2025-30208 或 CVE-2025-31125)

扫描结束后,工具将显示命中率统计信息:
- 扫描的目标总数
- CVE-2025-30208 的命中数量和命中率百分比
- CVE-2025-31125 的命中数量和命中率百分比
- 发现的漏洞总数

示例输出:
```
[+] 扫描完成!
[*] 扫描目标总数: 100
[*] CVE-2025-30208 命中: 15 (15.00%)
[*] CVE-2025-31125 命中: 8 (8.00%)
[*] 发现漏洞总数: 23
```

## 免责声明

本工具仅用于安全研究和授权测试,请勿用于非法用途。使用本工具进行测试时请确保已获得授权。

## License

[MIT License](LICENSE)


## 参考资料
- [NIST 30208](https://nvd.nist.gov/vuln/detail/CVE-2025-30208)
- [NIST 31125](https://nvd.nist.gov/vuln/detail/CVE-2025-31125)
- [Github 安全公告 - GHSA-x574-m823-4x7w](https://github.com/vitejs/vite/security/advisories/GHSA-x574-m823-4x7w)
- [Github 安全公告 - GHSA-4r4m-qw57-chr8](https://github.com/vitejs/vite/security/advisories/GHSA-4r4m-qw57-chr8)
- [Vite 提交 - 修复:防止通过导入实现任意文件读取](https://github.com/vitejs/vite/commit/59673137c45ac2bcfad1170d954347c1a17ab949)