
यह रिपॉजिटरी CVE-2025-4396 के लिए एक व्यावहारिक शोध और सत्यापन टूलकिट है, जो WordPress Relevanssi प्लगइन को `cats` पैरामीटर के माध्यम से प्रभावित करने वाला एक अनप्रमाणित टाइम-आधारित ब्लाइंड SQL इंजेक्शन है।
इस रिपॉजिटरी में CVE-2025-4396 के लिए एक व्यावहारिक अनुसंधान और सत्यापन टूलकिट है, जो वर्डप्रेस Relevanssi प्लगइन को cats पैरामीटर के माध्यम से प्रभावित करने वाला एक अप्रमाणित समय-आधारित ब्लाइंड SQL इंजेक्शन है।
यह प्रोजेक्ट अधिकृत पर्पल टीम अभियानों के लिए बनाया गया था ताकि:
रिपॉजिटरी में शामिल हैं:
अस्वीकरण
यह प्रोजेक्ट केवल शैक्षिक, रक्षात्मक सत्यापन और अधिकृत सुरक्षा परीक्षण के लिए प्रदान किया गया है।
इसका उपयोग उन सिस्टम के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके मूल्यांकन के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है।
CVE-2025-4396 वर्डप्रेस में Relevanssi खोज कार्यक्षमता को प्रभावित करने वाली एक SQL इंजेक्शन भेद्यता है।
परीक्षण किए गए परिदृश्य में, यह समस्या खोज वर्कफ़्लो के माध्यम से और विशेष रूप से cats पैरामीटर के माध्यम से पहुंच योग्य है। कमजोर कोड पथ हमलावर-नियंत्रित इनपुट को प्लगइन द्वारा उत्पन्न SQL क्वेरी को प्रभावित करने की अनुमति देता है।
चूंकि कमजोर एंडपॉइंट बिना पूर्व प्रमाणीकरण के पहुंच योग्य है, इसलिए दोष का उपयोग दूरस्थ हमलावर द्वारा अप्रमाणित SQL इंजेक्शन करने के लिए किया जा सकता है।
व्यावहारिक प्रभाव में शामिल हैं:
भेद्यता इसलिए मौजूद है क्योंकि खोज-संबंधित पैरामीटर से उपयोगकर्ता-नियंत्रित इनपुट को SQL क्वेरी में शामिल करने से पहले सुरक्षित रूप से नहीं संभाला जाता है।
व्यवहार में, इसका मतलब है कि एक हमलावर SQL अभिव्यक्तियों को बैकएंड क्वेरी लॉजिक में इंजेक्ट कर सकता है और डेटाबेस को अतिरिक्त शर्तों का मूल्यांकन करने के लिए मजबूर कर सकता है।
भेद्यता का शोषण ब्लाइंड मोड में किया जाता है, जिसका अर्थ है कि एप्लिकेशन सीधे SQL त्रुटियों या कच्चे डेटाबेस परिणामों को प्रदर्शित नहीं करता है।
पेज से क्वेरी आउटपुट पढ़ने के बजाय, हमलावर डेटाबेस से सही/गलत प्रश्नों की एक श्रृंखला पूछता है और एक दुष्प्रभाव देखता है:
शोषण सर्वर प्रतिक्रिया समय में मापने योग्य अंतर बनाने के लिए SLEEP() जैसे SQL फंक्शन पर निर्भर करता है।
यह एक हमलावर को सीधे देखे बिना डेटा का अनुमान लगाने की अनुमति देता है।
उदाहरण के लिए, हमलावर इस तरह के प्रश्न पूछ सकता है:
$ के बराबर है?"इस प्रक्रिया को दोहराकर, हमलावर एक पूर्ण हैश को वर्ण दर वर्ण पुनर्निर्मित कर सकता है।
मानक दृष्टिकोण एक ज्ञात वर्ण सेट के माध्यम से पुनरावृत्ति करता है और एक-एक करके प्रत्येक उम्मीदवार का परीक्षण करता है।
लक्ष्य हैश में प्रत्येक स्थिति के लिए:
यह विधि सरल और विश्वसनीय है, लेकिन अपेक्षाकृत धीमी है क्योंकि प्रति वर्ण कई अनुरोधों की आवश्यकता हो सकती है।
तेज़ दृष्टिकोण प्रत्येक वर्ण के ASCII मान पर बाइनरी सर्च का उपयोग करता है।
पूछने के बजाय:
a के बराबर है?"b के बराबर है?"c के बराबर है?"यह पूछता है:
यह प्रत्येक अनुरोध पर खोज स्थान को आधा कर देता है और HTTP अनुरोधों की संख्या को नाटकीय रूप से कम करता है।
यह हमला ऑपरेटर को wp_users से user_pass मान निकालने की अनुमति देता है, आमतौर पर चुने गए वर्डप्रेस उपयोगकर्ता आईडी जैसे:
1,हाल के वर्डप्रेस संस्करणों में, यह मान नए वर्डप्रेस 6.8+ पासवर्ड पाइपलाइन का उपयोग कर सकता है, जो संयोजन करता है:
CVE_2025_4396.pyयह मानक निष्कर्षण स्क्रिप्ट है।
यह एक क्लासिक टाइम-बेस्ड ब्लाइंड SQL इंजेक्शन करता है और एक निश्चित कैरेक्टर सेट पर लीनियर सर्च का उपयोग करके लक्ष्य हैश को कैरेक्टर दर कैरेक्टर निकालता है।
प्रत्येक कैरेक्टर स्थिति के लिए:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
आर्गुमेंट्स :
-t, --target : इंजेक्टेबल पैरामीटर सहित कमजोर लक्ष्य URL
-u, --userid : लक्षित करने के लिए वर्डप्रेस उपयोगकर्ता आईडी
-s, --sleep : सेकंड में स्लीप थ्रेशोल्ड
-v, --verbose : डिबग लॉगिंग सक्षम करें
CVE_2025_4396_Stealth.pyयह बाइनरी सर्च संस्करण है।
यह मानक स्क्रिप्ट के समान निष्कर्षण उद्देश्य को पूरा करता है, लेकिन लीनियर कैरेक्टर-बाय-कैरेक्टर सर्च को ASCII मानों पर बाइनरी सर्च से बदल देता है।
प्रत्येक स्थिति के लिए:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396_Stealth.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
एक बार जब पासवर्ड हैश वर्डप्रेस से निकाल लिया जाता है, तो अगला कदम इसे ऑफ़लाइन क्रैक करना है।
वर्डप्रेस 6.8+ हैशिंग नोट्स। परीक्षण किए गए वर्कफ़्लो में, निकाला गया मान इस तरह दिख सकता है:
$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.
Hashcat के लिए, उपयोग करने योग्य bcrypt भाग है:
$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.
हालाँकि, यह bcrypt सीधे कच्चे पासवर्ड पर लागू नहीं होता है। वर्डप्रेस पहले एक प्रीप्रोसेसिंग चरण लागू करता है:
इसका मतलब है कि यदि आप सटीक वर्डप्रेस 6.8+ लॉजिक को पुन: उत्पन्न करना चाहते हैं तो एक सामान्य वर्डलिस्ट सीधे Hashcat को नहीं भेजी जा सकती है।
इसके बजाय, प्रत्येक उम्मीदवार पासवर्ड को पहले अपने वर्डप्रेस-संगत प्री-हैश प्रतिनिधित्व में रूपांतरित किया जाना चाहिए।
रिपॉजिटरी में एक "सहायक" स्क्रिप्ट भी शामिल है जो:
$wp$ उपसर्ग हटाता है,हैश निकालें :
$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.क्रैकिंग वातावरण तैयार करें :
python3hashcat और PATH में उपलब्धAuto_Crack.py चलाएँ :
python3 Auto_Crack.py -H '\$wp\$2y\$10\$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.' -w /usr/share/wordlists/rockyou.txt
हमें "$" को "\" से एस्केप करने की आवश्यकता है -> bash संगतता
निम्नलिखित डिटेक्शन सामग्री का उपयोग SOC टीमों द्वारा शोषण प्रयासों की पहचान करने और रक्षात्मक परिपक्वता को मापने के लिए किया जा सकता है।
title: Potential Time-Based Blind SQLi (CVE-2025-4396 Relevanssi)
id: 5a8a1c93-5c74-4b5b-a620-8e1c3e41ab5d
status: experimental
description: Detects HTTP GET requests containing typical Time-Based Blind SQL injection payloads often used to exploit CVE-2025-4396 in the WordPress Relevanssi plugin (bypassing comma filters).
author: n3fhara
date: 2026-03-18
tags:
- attack.initial_access
- attack.t1190
- cve.2025-4396
logsource:
category: webserver
detection:
selection_endpoint:
cs-uri-query|contains:
- 's='
- 'cats='
- 'tags='
selection_payload:
cs-uri-query|contains:
- 'SLEEP('
- 'WAITFOR'
- 'SUBSTRING('
- 'ASCII('
- 'LENGTH('
selection_bypass_indicators:
cs-uri-query|contains:
- 'FROM'
- 'FOR 1'
- '*('
condition: selection_endpoint and selection_payload and selection_bypass_indicators
falsepositives:
- Highly unlikely. Legitimate search queries should not contain SQL functions.
level: high
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"ET EXPLOIT WordPress Relevanssi SQLi Attempt (CVE-2025-4396)"; flow:established,to_server; content:"GET"; http_method; content:"cats="; http_uri; pcre:"/(cats|tags)=.*(SLEEP|WAITFOR)%28.*(%2A|\*).*SUBSTRING/i"; classtype:web-application-attack; sid:1000001; rev:1; metadata:created_at 2026_03_18, cve CVE_2025_4396;)
index=web_logs sourcetype=access_combined
| regex uri_query="(?i)cats=|tags="
| stats count as request_count, avg(response_time) as avg_time, max(response_time) as max_time, dc(uri_query) as unique_payloads by clientip
| where request_count > 20 AND max_time > 2000
| sort - max_time
url.query : (*cats=* OR *tags=* OR *s=*) AND url.query : (*SLEEP* OR *WAITFOR* OR *SUBSTRING* OR *ASCII*) AND url.query : (*FROM* OR *FOR* OR *%2A*)
sequence by source.ip with maxspan=1m
[network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
[network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
[network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
उपरोक्त बेसलाइन डिटेक्शन गैर-अस्पष्ट शोषण के लिए अच्छे हैं, लेकिन जब कोई ऑपरेटर अधिक उन्नत तकनीक का परिचय देता है तो वे कमजोर हो जाते हैं।
SOC दृश्यता तब कम हो जाती है जब हमलावर इसका उपयोग करना शुरू करता है:
.
├── CVE_2025_4396.py
├── CVE_2025_4396_Stealth.py
├── Auto_Crack.py
├── README.md
└── relevanssi.4.24.4.zip
केवल उन वातावरणों में उपयोग करें जहाँ आपको स्पष्ट रूप से परीक्षण करने का अधिकार है। लेखक और योगदानकर्ता दुरुपयोग के लिए कोई देयता नहीं लेते हैं।
अस्वीकरण
यह प्रोजेक्ट केवल शैक्षिक, रक्षात्मक सत्यापन और अधिकृत सुरक्षा परीक्षण के लिए प्रदान किया गया है।
इसका उपयोग उन सिस्टम के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके मूल्यांकन के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है।