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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-75431_PowerJob_jwt_key_predictable — PowerJob सर्वर में एक गंभीर JWT साइनिंग कुंजी पूर्वानुमेयता भेद्यता प्रदर्शित करता है, जो ऑफ़लाइन कुंजी व्युत्पत्ति और टोकन जालसाजी की अनुमति देता है, जिससे एडमिन अधिग्रहण और OpenAPI प्रमाणीकरण बायपास संभव होता है। | Kitploit
उपकरण/GitHubGitHub/unpredictable21/cve-2026-75431_powerjob_jwt_key_predictable
भेद्यता विश्लेषणशोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगप्रमाणीकरण
GitHubunpredictable21/cve-2026-75431_powerjob_jwt_key_predictable

CVE-2026-75431_PowerJob_jwt_key_predictable

PowerJob सर्वर में एक गंभीर JWT साइनिंग कुंजी पूर्वानुमेयता भेद्यता प्रदर्शित करता है, जो ऑफ़लाइन कुंजी व्युत्पत्ति और टोकन जालसाजी की अनुमति देता है, जिससे एडमिन अधिग्रहण और OpenAPI प्रमाणीकरण बायपास संभव होता है।

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

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

सभी देखें →

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

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

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

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

PowerJob JWT साइनिंग कुंजी अनुमान योग्य (डिफ़ॉल्ट JDBC URL से व्युत्पन्न कुंजी) → टोकन जालसाजी

1. सारांश

PowerJob सर्वर की JWT (HS256) साइनिंग कुंजी डिफ़ॉल्ट JDBC URL के MD5 के साथ संयोजित हार्डकोडेड स्थिरांक को BASE64-डिकोड करके व्युत्पन्न की जाती है (DefaultSecretProvider / JwtServiceImpl)। JDBC URL डिफ़ॉल्ट परिनियोजन (docker-compose / application-daily.properties) में सार्वजनिक है, इसलिए एक हमलावर पूरी तरह से ऑफ़लाइन कुंजी व्युत्पन्न कर सकता है और किसी भी उपयोगकर्ता (एडमिन सहित) के लिए एक वैध JWT जाली बना सकता है; OpenAPI ऐप टोकन भी इसी प्रकार OpenAPI प्रमाणीकरण को बायपास करने के लिए जाली बनाया जा सकता है।

2. प्रभावित उत्पाद

  • उत्पाद: PowerJob सर्वर (वेब कंसोल 7700 + OpenAPI)
  • प्रभावित संस्करण: 5.1.2
  • डिफ़ॉल्ट परिनियोजन: application-daily.properties jdbc:mysql://powerjob-mysql:3306/powerjob-daily?... को प्लेनटेक्स्ट में उजागर करता है

3. भेद्यता स्थान

  • powerjob-server-auth/.../jwt/impl/DefaultSecretProvider.java:31-45: return md5(environment.getProperty("spring.datasource.core.jdbc-url"));
  • powerjob-server-auth/.../jwt/impl/JwtServiceImpl.java:44-102: हार्डकोडेड BASE_SECURITY स्थिरांक; genSecretKey(secret) = Decoders.BASE64.decode(BASE_SECURITY.concat(secret)) → Keys.hmacShaKeyFor
  • कुंजी व्यावसायिक डेटा के साथ रिपॉजिटरी/डेटाबेस साझा करती है; JDBC URL कॉन्फ़िग/docker-compose में प्लेनटेक्स्ट है।

4. मूल कारण

  • यादृच्छिक, स्थायी कुंजी के बजाय एक अनुमान योग्य / व्युत्पन्न योग्य कुंजी का उपयोग किया जाता है: कुंजी केवल एक सार्वजनिक स्थिरांक + सार्वजनिक डिफ़ॉल्ट URL के MD5 पर निर्भर करती है।
  • JWT पेलोड (username/encryptedToken) में PWJB खातों के लिए एक द्वितीयक जाँच होती है (DigestUtils.rePassword(password, username)), लेकिन:
    • डिफ़ॉल्ट पासवर्ड के तहत यह मान ऑफ़लाइन गणना योग्य है → पूर्ण एडमिन अधिग्रहण;
    • OpenAPI ऐप टोकन (दावे appId/password/encryptType) प्रमाणीकरण को बायपास करने के लिए सीधे जाली बनाया जा सकता है (OpenApiSecurityServiceImpl:87-105);
    • अन्य तृतीय-पक्ष लॉगिन खातों में द्वितीयक जाँच नहीं हो सकती है।

5. पुनरुत्पादन (सत्यापित — पूर्ण एंड-टू-एंड)

पर्यावरण: स्थानीय PowerJob सर्वर (127.0.0.1:7700, JDBC URL jdbc:mysql://127.0.0.1:3307/powerjob_daily?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true)। हमलावर सब कुछ केवल सार्वजनिक जानकारी से ऑफ़लाइन व्युत्पन्न करता है:

root@kitploit:~
# ① encryptedToken (= rePassword(password, username)) व्युत्पन्न करें; डिफ़ॉल्ट पासवर्ड के साथ गणना योग्य
rePassword("powerjob_admin", "ADMIN")
   = ADMIN_b82a450701f6a71723fb99931fe35e18_b      # DB user_info.token_login_verify_info के बाइट-दर-बाइट बराबर ✅

# ② HS256 साइनिंग कुंजी = BASE64(BASE_SECURITY + MD5(JDBC_URL)) व्युत्पन्न करें
secret = BASE_SECURITY + md5(jdbc_url)             # 101-बाइट कुंजी

# ③ एक ADMIN वेब JWT जाली बनाएं (दावे: username=PWJB_ADMIN, encryptedToken=① का परिणाम, sub=PowerJob)

वास्तविक परिणाम (जाली टोकन प्रमाणीकरण पास करता है):

root@kitploit:~
[*] /namespace/list बिना टोकन :
{"success":false,"data":null,"message":"PowerJobAuthException: UserNotLoggedIn","code":"-100"}

[*] /namespace/list जाली JWT :
{"success":true,"data":{"index":0,"pageSize":10,"totalPages":1,"totalItems":1,"data":[{"id":1,"code":"default_namespace","name":"default_namespace","dept":null,"tags":null,"extra":null,"status":1,"statusStr":"ENABLE","gmtCreate":"2026-08-07T13:07:32.000+00:00","gmtCreateStr":"2026-08-07 21:07:32","gmtModified":"2026-08-07T13:07:32.000+00:00","gmtModifiedStr":"2026-08-07 21:07:32","showName":"default_namespace(default_namespace)","token":"14e4ebff-9a79-4845-ac66-8b20c4dff2ee","componentUserRoleInfo":{"observer":[],"qa":[],"developer":[],"admin":[]},"creatorShowName":null,"modifierShowName":null}]},"message":null}

→ जाली टोकन एडमिन के रूप में प्रमाणित होता है और वास्तविक डेटा लौटाता है (आधार रेखा UserNotLoggedIn के साथ अस्वीकृत होती है)।

मुख्य बिंदु:

  • ऑफ़लाइन व्युत्पन्न encryptedToken DB-संग्रहीत मान से बाइट-दर-बाइट मेल खाता है (ADMIN_b82a450701f6a71723fb99931fe35e18_b)।
  • कुंजी पूरी तरह से सार्वजनिक स्थिरांक BASE_SECURITY + सार्वजनिक डिफ़ॉल्ट JDBC URL के MD5 द्वारा निर्धारित होती है → बिना किसी क्रेडेंशियल के ऑफ़लाइन व्युत्पन्न योग्य।
  • PWJB encryptedToken डिफ़ॉल्ट पासवर्ड (powerjob_admin, खोज PJ-02) के साथ ऑफ़लाइन पुनर्गणना योग्य है → पूर्ण एडमिन अधिग्रहण।
  • यदि एडमिन ने पासवर्ड बदल दिया है, तो वेब टोकन जालसाजी encryptedToken बेमेल द्वारा अवरुद्ध हो जाती है, लेकिन OpenAPI ऐप टोकन पथ (दावे appId/password/encryptType, OpenApiSecurityServiceImpl:87-105) अभी भी OpenAPI प्रमाणीकरण को बायपास करने के लिए स्वतंत्र रूप से जाली बनाया जा सकता है।

भले ही डिफ़ॉल्ट पासवर्ड बदल दिया जाए, भेद्यता अन्य हमले वैक्टरों के माध्यम से बनी रहती है:

  • एक हमलावर जो अन्य माध्यमों (जैसे, SQL इंजेक्शन, डेटाबेस बैकअप एक्सपोज़र, लॉग लीकेज, या अन्य एंडपॉइंट्स से सूचना प्रकटीकरण) से किसी भी वैध उपयोगकर्ता का encryptedToken प्राप्त करता है, वह उस टोकन को अनुमान योग्य साइनिंग कुंजी के साथ जोड़कर उस विशिष्ट उपयोगकर्ता के लिए JWT जाली बना सकता है।
  • यह encryptedToken बेमेल समस्या को पूरी तरह से बायपास करता है, क्योंकि जाली टोकन में अब वास्तविक डेटाबेस रिकॉर्ड से व्युत्पन्न एक वैध encryptedToken होता है।
  • परिणामस्वरूप, हमलावर को उपयोगकर्ता का प्लेनटेक्स्ट पासवर्ड जानने की बिल्कुल आवश्यकता नहीं होती है, और जाली JWT उपयोगकर्ता के पासवर्ड बदलने के बाद भी वैध रहता है (टोकन समाप्त होने तक)।

PoC: powerjob_jwt_key.py 192.168.49.128:7700

image
image

6. प्रभाव

  • प्रमाणीकरण बायपास / मनमाना-उपयोगकर्ता टोकन जालसाजी → वेब कंसोल / OpenAPI प्रशासन सतहें।

7. सुझाया गया समाधान

  • कुंजी को यादृच्छिक रूप से उत्पन्न करें और इसे स्थायी रूप से संग्रहीत करें (फ़ाइल/पर्यावरण), इसे कभी भी JDBC URL या स्थिरांक से व्युत्पन्न न करें।
  • OpenAPI ऐप टोकन बनाम वेब JWT के लिए एक अलग कुंजी का उपयोग करें।
  • सभी खातों के लिए encryptedToken द्वितीयक जाँच लागू करें।

8. CWE / CVSS

  • CWE: CWE-321 (हार्ड-कोडेड क्रिप्टोग्राफ़िक कुंजी का उपयोग) / CWE-798
  • CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N = 9.1 क्रिटिकल (डिफ़ॉल्ट पासवर्ड / OpenAPI के साथ संयुक्त)
टूल डाउनलोड करें