
Docker-आधारित प्रयोगशाला CVE-2026-42647 के पुनरुत्पादन के लिए, जो JoomSport वर्डप्रेस प्लगइन में sortf पैरामीटर के माध्यम से एक अप्रमाणित समय-आधारित ब्लाइंड SQL इंजेक्शन है। तुलना के लिए असुरक्षित और पैच किए गए लक्ष्य शामिल हैं।
sortf के माध्यम सेइस रिपॉज़िटरी में CVE-2026-42647 को पुन: उत्पन्न करने और मान्य करने के लिए एक स्थानीय Docker लैब है, जो WordPress प्लगइन JoomSport - for Sports: Team & League, Football, Hockey & more को प्रभावित करने वाली एक अप्रमाणित SQL इंजेक्शन कमजोरी है।
कमजोर व्यवहार खिलाड़ी सूची क्रमबद्ध सुविधा में होता है। एक सार्वजनिक आगंतुक sortf क्वेरी पैरामीटर को नियंत्रित कर सकता है, जिसका उपयोग SQL ORDER BY खंड बनाने के लिए किया जाता है। कमजोर संस्करणों में, मान को टेक्स्ट के रूप में संसाधित किया जाता है और बैकटिक्स में लपेटा जाता है, लेकिन SQL क्वेरी में जोड़े जाने से पहले एक सख्त अनुमति सूची के विरुद्ध मान्य नहीं किया जाता है।
यह लैब दो JoomSport संस्करणों की तुलना करता है:
| सेवा | JoomSport संस्करण | उद्देश्य | URL |
|---|---|---|---|
vuln | 5.7.6 | कमजोर तुलना लक्ष्य | http://localhost:8081 |
patched | 5.7.8 | पैच किया गया तुलना लक्ष्य | http://localhost:8082 |
सार्वजनिक परामर्श 5.7.8 से पहले के संस्करणों को प्रभावित और 5.7.8 को निश्चित संस्करण के रूप में पहचानते हैं। यह लैब 5.7.6 का उपयोग कमजोर लक्ष्य के रूप में करता है क्योंकि इस लैब को तैयार करने के समय WordPress.org प्लगइन SVN टैग लिस्टिंग में 5.7.7 स्रोत टैग उपलब्ध नहीं था।
प्रदर्शित कमजोरी श्रृंखला है:```text Unauthenticated visitor → JoomSport season player list route → attacker-controlled sortf parameter → unsafe dynamic ORDER BY construction → SQL expression execution → measurable database delay in vulnerable version → patched version rejects the injected sort field and falls back to a safe allowlisted field
यह लैब भेद्यता को समय-आधारित ब्लाइंड SQL इंजेक्शन के रूप में मान्य करता है। यह डेटाबेस डंपिंग, क्रेडेंशियल निष्कर्षण, डेटा संशोधन, या विनाशकारी SQL संचालन नहीं करता है।
यह लैब केवल नियंत्रित स्थानीय अनुसंधान, स्रोत-स्तरीय समझ, और पोर्टफोलियो प्रदर्शन के लिए डिज़ाइन किया गया है।
## Verified Facts
| दावा | साक्ष्य | इस लैब में कैसे सत्यापित करें |
| ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| JoomSport 5.7.8 से पहले के संस्करण में बिना प्रमाणीकरण के SQL इंजेक्शन की सूचना दी गई है। | सार्वजनिक सलाहकारियाँ JoomSport `< 5.7.8` / `<= 5.7.7` को प्रभावित बताती हैं। | संदर्भ अनुभाग की समीक्षा करें और कमजोर/पैच की गई सेवाओं की तुलना करें। |
| JoomSport 5.7.8 स्थिर संस्करण है। | सार्वजनिक सलाहकारियाँ और स्रोत तुलना दर्शाती हैं कि 5.7.8 ऑर्डरिंग एक्सप्रेशन बनाने से पहले `sortf` मान को मान्य करता है। | दोनों संस्करणों में `class-jsport-playerlist.php` का निरीक्षण करें। |
| प्रभावित पैरामीटर `sortf` है। | कमजोर प्लेयर सूची कोड `classJsportRequest::get('sortf')` पढ़ता है। | PoC चलाएँ और इंजेक्ट किए गए `sortf` अनुरोध का निरीक्षण करें। |
| कमजोर कोड उपयोगकर्ता इनपुट से एक गतिशील SQL ऑर्डरिंग मान बनाता है। | कमजोर संस्करण में, `sortf` का उपयोग `$options['ordering']` बनाने के लिए किया जाता है। | `sportleague/classes/objects/class-jsport-playerlist.php` का निरीक्षण करें। |
| SQL सिंक एक `ORDER BY` क्लॉज़ है। | उत्पन्न `$ordering` मान बाद में `ORDER BY` के साथ SQL क्वेरी में जोड़ा जाता है। | `sportleague/base/wordpress/classes/class-jsport-getplayers.php` का निरीक्षण करें। |
| पैच अनुमति-सूची-शैली सुधार का उपयोग करता है। | पैच किए गए संस्करण में सॉर्ट फ़ील्ड का उपयोग करने से पहले अनुमत स्थिर कॉलम और अपेक्षित गतिशील फ़ील्ड पैटर्न शामिल किए गए हैं। | JoomSport 5.7.6 और 5.7.8 स्रोत की तुलना करें। |
| लैब समय-आधारित ब्लाइंड SQL इंजेक्शन प्रदर्शित करता है। | जब इंजेक्ट किया गया `SLEEP()` एक्सप्रेशन उपयोग किया जाता है तो कमजोर लक्ष्य विलंब करता है; पैच किया गया लक्ष्य ऐसा नहीं करता। | `python3 poc/poc.py http://localhost:8081 http://localhost:8082` चलाएँ। |
## Assumptions and Unknowns
यह लैब JoomSport 5.7.6 का उपयोग कमजोर तुलना लक्ष्य के रूप में करता है क्योंकि सार्वजनिक स्थिर संस्करण 5.7.8 है और लैब तैयार करते समय WordPress.org प्लगइन SVN टैग सूची में 5.7.7 स्रोत टैग उपलब्ध नहीं था।
लैब यह दावा नहीं करता है कि 5.7.6 ही एकमात्र कमजोर संस्करण है। इसका उपयोग पैच किए गए 5.7.8 व्यवहार के मुकाबले कमजोर व्यवहार की तुलना करने के लिए एक पुनरुत्पादनीय कमजोर आधार रेखा के रूप में किया जाता है।
लैब प्लेयर सूची सॉर्टिंग प्रवाह में `sortf` पैरामीटर पर केंद्रित है।
प्रदर्शित प्रभाव समय-आधारित ब्लाइंड SQL इंजेक्शन है। लैब निम्नलिखित प्रदर्शित नहीं करता है:
* प्रत्यक्ष डेटाबेस डंपिंग,
* क्रेडेंशियल निष्कर्षण,
* प्रमाणीकरण बाईपास,
* विशेषाधिकार वृद्धि,
* मनमाना डेटा संशोधन,
* दूरस्थ कोड निष्पादन,
* स्थायित्व,
* बाहरी कॉलबैक,
* या गैर-लैब प्रणालियों के विरुद्ध हमले।
त्रुटि-आधारित या बूलियन-आधारित व्यवहार डेटाबेस व्यवहार, एप्लिकेशन कॉन्फ़िगरेशन और प्रतिक्रिया अंतर के आधार पर संभव हो सकता है, लेकिन यह लैब उन तकनीकों पर निर्भर नहीं करता है। प्राथमिक प्रमाण समय-आधारित है।
## Root Cause Summary
मूल कारण `sortf` अनुरोध पैरामीटर से एक गतिशील SQL `ORDER BY` क्लॉज़ का असुरक्षित निर्माण है।
कमजोर कोड पथ यहाँ से शुरू होता है:```text
sportleague/classes/objects/class-jsport-playerlist.php
खिलाड़ी सूची लोडिंग लॉजिक के अंदर, JoomSport अनुरोध पैरामीटर पढ़ता है:```text sortf
और इसका उपयोग निर्माण करने के लिए करता है:```text
$options['ordering']
प्रासंगिक कमजोर स्रोत पैटर्न है:```php
if (classJsportRequest::get('sortf')) {
$typeAD = in_array(classJsportRequest::get('sortd'), array("ASC","DESC")) ? classJsportRequest::get('sortd') : "ASC";
$options['ordering'] = str_replace(" ","",sanitize_text_field("".classJsportRequest::get('sortf')."")).' '.$typeAD;
}
समस्या मुख्य रूप से `sortd` पैरामीटर की नहीं है। `sortd` मान इन तक सीमित है:```text
ASC
DESC
समस्या sortf पैरामीटर की है क्योंकि यह SQL पहचानकर्ता/एक्सप्रेशन स्थिति को नियंत्रित करता है जिसका उपयोग सॉर्टिंग के लिए किया जाता है।
खतरनाक अभिव्यक्ति है:```php
"".classJsportRequest::get('sortf').""
कोड हमलावर-नियंत्रित इनपुट को MySQL पहचानकर्ता संदर्भ में रखता है और फिर इसे SQL क्रमबद्धन खंड के रूप में आगे भेजता है।
कोड लागू करता है:```php
sanitize_text_field()
लेकिन sanitize_text_field() SQL पहचानकर्ता सत्यापन नहीं है। यह टेक्स्ट को साफ करने के लिए डिज़ाइन किया गया है, SQL सिंटैक्स को सुरक्षित रूप से बनाने के लिए नहीं।
कमजोर कोड उपयोगकर्ता-नियंत्रित सॉर्ट फ़ील्ड को बैकटिक्स में लपेटता है। हालांकि, बैकटिक्स सुरक्षा सीमा नहीं हैं जब हमलावर पहचानकर्ता सामग्री को प्रभावित कर सकता है। यदि कोई हमलावर मान में बैकटिक इंजेक्ट कर सकता है, तो वे इच्छित पहचानकर्ता संदर्भ से बाहर निकल सकते हैं।