
Joomla 3.7.0 com_fields SQL इंजेक्शन भेद्यता (CVE-2017-8917) के लिए अवधारणा का प्रमाण एक्सप्लॉइट, जो CTF-अनुकूल कार्यप्रवाह में पता लगाने, गणना और डेटा निष्कर्षण का प्रदर्शन करता है।
इस रिपॉजिटरी में Joomla के com_fields SQL इंजेक्शन भेद्यता (CVE-2017-8917) के लिए एक सरल, CTF-अनुकूल प्रमाण-अवधारणा (PoC) शामिल है। लक्ष्य कार्यप्रवाह को हल्का रखते हुए पूर्ण शोषण प्रवाह (डिटेक्शन, गणना, और डेटा निष्कर्षण) दिखाना है।
भेद्यता: Joomla के com_fields घटक में SQL इंजेक्शन।
मूल कारण: list[fullordering] पैरामीटर ठीक से सैनिटाइज़ नहीं किया गया है, जिससे SQL को उत्पन्न क्वेरी में इंजेक्ट किया जा सकता है। जब इसे त्रुटि-आधारित पेलोड (जैसे, UpdateXML) के साथ तैयार किया जाता है, तो SQL परिणाम प्रतिक्रिया में प्रकट किया जा सकता है, जिससे डेटा निष्कर्षण संभव होता है।
इसका शोषण कैसे किया जाता है (उच्च स्तर):
list[fullordering] पैरामीटर को दुर्भावनापूर्ण पेलोड के साथ सेट करके index.php?option=com_fields&view=fields&layout=modal पर एक तैयार अनुरोध भेजें।UpdateXML) का उपयोग करें।<title> टैग) को पार्स करें और इंजेक्ट किए गए आउटपुट को निकालें।नीचे सबसे महत्वपूर्ण घटक दिए गए हैं।
parse_args()CLI तर्कों को host और debug के साथ एक सरल args ऑब्जेक्ट में पार्स करता है। स्क्रिप्ट पोर्ट 80 पर HTTP मानती है और --host से बेस URL बनाती है।
run_exploit()run_exploit() मुख्य ऑर्केस्ट्रेशन फ़ंक्शन है:
requests.Session() का उपयोग करता है ताकि कुकीज़ और हेडर बने रहें।request_title(): एक अनुरोध भेजता है और <title> मान निकालता है। PoC डेटा को इस टैग में लीक करने के लिए त्रुटि-आधारित SQLi का उपयोग करता है, इसलिए यह डेटा निष्कर्षण का मूल है।build_params(): इंजेक्ट किए गए SQL के साथ कमज़ोर अनुरोध पैरामीटर बनाता है।sql_list() और dump_table() गणना और खंडित निष्कर्षण को स्वचालित करते हैं।_fetch_token()CSRF टोकन Joomla लॉगिन पृष्ठ से निकाला जाता है। जबकि कुछ परिदृश्यों में इसकी आवश्यकता नहीं हो सकती है, अनेक Joomla रूट अभी भी CSRF जाँच लागू करते हैं। इसे शामिल करने से:
wrap_payload() और encode_sql_string()ये सहायक वास्तविक इंजेक्शन पेलोड उत्पन्न करते हैं:
wrap_payload() एक कच्ची क्वेरी को UpdateXML(...) में लपेटता है ताकि त्रुटि-आधारित आउटपुट को बल दिया जा सके।encode_sql_string() स्ट्रिंग्स को CHAR(...) एक्सप्रेशन में बदलता है ताकि उद्धरण संबंधी समस्याओं से बचा जा सके।_dump_table())पंक्तियों को एक विभाजक के साथ जोड़ा जाता है और ट्रंकेशन से बचने के लिए उपस्ट्रिंग्स में प्राप्त किया जाता है। यह आउटपुट को सुसंगत बनाए रखता है, भले ही पंक्ति मान लंबे हों।
python main.py --host <TARGET_IP>
वैकल्पिक डिबग आउटपुट:
python main.py --host <TARGET_IP> --debug
└─$ python exploit.py --host <TARGET>
]LLLLLLmmmmmLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
ms. ]LLLLLLLLLLLLLLLLL[ ,m
]LLLLs. ]LLLLLLLL~+LLLLLLL[ _gLLLL
LLLLLLLL_. LLLLLLLL ~~\LLLL[ ,gLLLLLLLi
dLLLLLLLLLLm_ -LLLLLLLo LLL[ _mLLLLLLLLLL.
iLLLLLLLLLLLLLLs. ]LLf` , 'c LLL[ ,gLLLLLLLLLLLLLL
iLLLLLLLLLLLLLLLLLLsgL` 'c- \. LLLLLLLLLLLLLLLLLLLLLL
,LLLLLLLLLLLLLLLLLLLLL! =__/Li iLLLLLLLLLLLLLLLLLLLLLLL
gLLLLLLLLLLLLLLLLLLLLLL imm_.Y~'` LLLLLLLLLLLLLLLLLLLLLLLLL.
dLLLLLLLLLLLLLLLLLLLLLLL 'LL_ dLLLLLLLLLLLLLLLLLLLLLLLLLLi
,LLLLLLLLLLLLLLLLLLLLLLLLLi ~--__LLLLLLLLLLLLLLLLLLLLLLLLLLLLs
'LLLLLLLLLLLLLLLLLLLLLLLLLLs. LLLLLLLLLLLLLLLLLLLLLLLLLLLLL~
'LLLLLLLLLLLLLLLLLLLLLLLLLL_. LLLLLLLLLLLLLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLLLLLLLLLm_ 'LLLLLLLLLLLLLLLLLLLf`
'LLLLLLLLLLLLLLLLLLLLLLLL'Lm_ LLLLLLLLLLLLLLLL`
LLLLLLLLLLLLLLLLLLLLLL 'LL LLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLL L LLLLLLLLLLL~
_LLLLLLLLLLLLLLL !i ] ,LLLLLLLLLLLs.
gLLLLLLLLLLLLLLLLL! 's [ _mLLLLLLLLLLLLLLLs
gmLLLLLLLLLLLLLLLLLLL ~eLLLLLLLLLLLLLLLLLLLLLms
_gLLLLLLLLLLLLLLLLLLLLLL. 'LLLLLLLLLLLLLLLLLLLLLLLs_
_gLLLLLLLLLLLLLLLLLLLLLLLLLL_ !LLLLLLLLLLLLLLLLLLLLLLLLs.
,gLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLm_ YLLLLLLLLLLLLLLLLLLLLLLLLLms
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLs ]LLLLLLLLLLLLLLLLLLLLLLLLLL`
'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 'YL ]LLLLLLLLLLLLLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLLLLLLLLLLf`! f ,LLLLLLLLLLLLLLLLLLLLLLLL!
'LLLLLLLLLLLLLLLLLLLLLLLLL[ LmmLLLLLLLLLLLLLLLLLLLLLLLL`
LLLLLLLLLLLLLLLLLf LLLLi t LLLLLLL LLLLLLLLLLLLLLLLL!
'LLLLLLLLLLLLLf LLLL[ '*LLLLLLL 'LLLLLLLLLLLLL[
!LLLLLLLLLf` LLLLLs 'YLLLLL ~LLLLLLLLLL
LLLLLLf~ LLLLLLLs LLLLL ~LLLLLL`
'LLL~ LLLLLLLLLm iLLLLL ~LLL~
~` LLLLLLLL[LLmLLLLLL '`
LLLLLL`d[ LLLLLLLL
LLLLLLdL[ LLLLLLLL
LLLLLLLLLLLLLLLLLL Juergen Jakubowski
LLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLLL [email protected]
EXPLOIT BY ztrxwzy.
INSPIRED BY THE POC FROM Baptiste Contreras.
[888] Target : http://10.66.187.202:80/index.php
[888] CSRF token : 3ec54b1b32b5dc2dd8186537821b8dc1
[888] http://10.66.187.202:80/index.php is vulnerable to SQLi
[888] Database version detected : 5.5.64-MariaDB
[888] Current database : joomla
[888] Tables in database joomla
MIT लाइसेंस कॉपीराइट (c) 2025 Jesús Caldera
इसके द्वारा, किसी भी व्यक्ति को, जो इस सॉफ़्टवेयर और संबद्ध दस्तावेज़ फ़ाइलों (जिसे "सॉफ़्टवेयर" कहा जाता है) की एक प्रति प्राप्त करता है, बिना किसी प्रतिबंध के सॉफ़्टवेयर में सौदा करने की अनुमति निःशुल्क प्रदान की जाती है, जिसमें बिना सीमा के उपयोग, प्रतिलिपि, संशोधन, विलय, प्रकाशन, वितरण, उप-लाइसेंस, और/या सॉफ़्टवेयर की प्रतियाँ बेचने के अधिकार शामिल हैं, और ऐसा करने वाले व्यक्तियों को, जिन्हें सॉफ़्टवेयर प्रदान किया गया है, निम्नलिखित शर्तों के अधीन ऐसा करने की अनुमति दी जाती है:
उपरोक्त कॉपीराइट सूचना और यह अनुमति सूचना सॉफ़्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल की जाएगी।
सॉफ़्टवेयर "जैसा है" प्रदान किया जाता है, बिना किसी प्रकार की वारंटी के, स्पष्ट या निहित, जिसमें बिना सीमा के व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और गैर-उल्लंघन की वारंटी शामिल है। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य देयता के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध के कार्य, टोर्ट या अन्यथा से उत्पन्न हो, सॉफ़्टवेयर से या सॉफ़्टवेयर के उपयोग या अन्य सौदों से संबंधित हो।