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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2026-43512-poc — CVE-2026-43512 (Apache Tomcat Digest Authentication Bypass) के लिए शोषण क्षमता PoC | Kitploit
उपकरण/GitHubGitHub/covepseng/cve-2026-43512-poc
भेद्यता विश्लेषणशोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगप्रमाणीकरणपेपर और शोधलर्निंग और शिक्षा
GitHubcovepseng/cve-2026-43512-poc

cve-2026-43512-poc

CVE-2026-43512 (Apache Tomcat Digest Authentication Bypass) के लिए शोषण क्षमता PoC

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

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

सभी देखें →

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

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

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

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

CVE-2026-43512 — Apache Tomcat DIGEST प्रमाणीकरण बायपास

शोषणक्षमता विश्लेषण परिणाम: मूल कारण की पुष्टि हो गई है। अंत-से-अंत शोषण एक मानक UserDatabaseRealm तैनाती के विरुद्ध प्रतिलिपि योग्य नहीं है। विवरण के लिए विश्लेषण देखें।


विषय-सूची

  • अवलोकन
  • प्रभावित संस्करण
  • मूल कारण
  • विश्लेषण
  • भंडार संरचना
  • आवश्यकताएँ
  • उपयोग
  • अपेक्षित आउटपुट
  • संदर्भ
  • अस्वीकरण

अवलोकन

CVE-2026-43512, Apache Tomcat के HTTP DIGEST प्रमाणीकरण तंत्र में एक भेद्यता है। विधि RealmBase.getDigest() A1 हैश इनपुट बनाने से पहले getPassword(username) के वापसी मान को मान्य नहीं करती है। जब कॉन्फ़िगर किए गए Realm में कोई उपयोगकर्ता नाम मौजूद नहीं होता है, तो getPassword() लौटाता है, जिसे Java का स्ट्रिंग संयोजन ऑपरेटर चार-अक्षर वाले शाब्दिक में मूक रूप से परिवर्तित कर देता है।

null
"null"

इसलिए सर्वर गणना करता है:

root@kitploit:~
A1 = MD5("<username>:<realm>:null")

एक क्लाइंट जो शाब्दिक स्ट्रिंग "null" को पासवर्ड के रूप में उपयोग करके गणना की गई DIGEST प्रतिक्रिया प्रस्तुत करता है, एक समान हैश उत्पन्न करता है। सलाहकार के अनुसार, यह एक प्रमाणीकरण बायपास का गठन करता है।

इस भंडार में एक न्यूनतम प्रतिलिपि योग्य वातावरण और एक Go-आधारित प्रूफ ऑफ कॉन्सेप्ट शामिल है ताकि एक वास्तविक Tomcat इंस्टेंस के विरुद्ध उस दावे को सत्यापित किया जा सके।


प्रभावित संस्करण

प्रभावित श्रेणीमें स्थिर
7.0.0 – 7.0.1097.0.110
8.5.0 – 8.5.1008.5.101
9.0.0.M1 – 9.0.1179.0.118
10.1.0.M1 – 10.1.5410.1.55
11.0.0.M1 – 11.0.2111.0.22

मूल कारण

RealmBase.java (सभी प्रभावित शाखाओं) में भेद्य कोड पथ:

root@kitploit:~
// RealmBase.java — भेद्य
protected String getDigest(String username, String realmName, String algorithm) {
    if (hasMessageDigest(algorithm)) {
        return getPassword(username);  // अज्ञात उपयोगकर्ताओं के लिए null लौटाता है
    }

    // null को Java द्वारा शाब्दिक "null" के रूप में जोड़ा जाता है
    String a1 = username + ":" + realmName + ":" + getPassword(username);
    return HexUtils.toHexString(
        ConcurrentMessageDigest.digest(algorithm, a1.getBytes(...))
    );
}

सुधार (commit 6565a6c) एक स्पष्ट null गार्ड जोड़ता है:

root@kitploit:~
// RealmBase.java — पैच किया गया
protected String getDigest(String username, String realmName, String algorithm) {
    String password = getPassword(username);
    if (password == null) {
        return null; 
    }
    ...
}

विश्लेषण

Tomcat 11.0.0-M1 पर FINE-स्तरीय लॉगिंग सक्षम के साथ PoC चलाने से निम्नलिखित पता चलता है:

root@kitploit:~
Digest:        2388e2c78407def640f37f092a8d3a84   ← क्लाइंट
Server digest: 2388e2c78407def640f37f092a8d3a84   ← सर्वर
Failed to authenticate user [ghost]

डाइजेस्ट हैश मेल खाते हैं। getDigest() में बग वास्तविक है और पुष्टि की गई है। हालाँकि, प्रमाणीकरण अभी भी विफल होता है क्योंकि RealmBase.authenticate() में एक दूसरी, स्वतंत्र जाँच है:

root@kitploit:~
// RealmBase.authenticate()
if (serverDigest.equals(clientDigest)) {
    return getPrincipal(username);  // गैर-मौजूद उपयोगकर्ताओं के लिए null लौटाता है
}
return null;

tomcat-users.xml द्वारा समर्थित एक मानक UserDatabaseRealm में, getPrincipal() इन-मेमोरी उपयोगकर्ता डेटाबेस के विरुद्ध एक लुकअप करता है। उस डेटाबेस में मौजूद नहीं होने वाले उपयोगकर्ता नाम के लिए, यह null लौटाता है। कॉलर एक null Principal को प्रमाणीकरण विफलता मानता है और 401 जारी करता है।


भंडार संरचना

root@kitploit:~
cve-2026-43512-poc/
├── Dockerfile                          # Tomcat 11.0.0-M1 (प्रभावित संस्करण)
├── tomcat-users.xml                    # न्यूनतम Realm कॉन्फ़िग — कोई उपयोगकर्ता "ghost" नहीं
├── web.xml
├── exploit/
│   ├── exploit.go                      # PoC — Go, केवल stdlib
│   └── go.mod
└── README.md

आवश्यकताएँ

उपकरणसंस्करणटिप्पणियाँ
Podman≥ 4.0Docker भी काम करता है
Go≥ 1.22केवल स्थानीय रूप से शोषण चलाने के लिए

उपयोग

1. कंटेनर बनाएँ और प्रारंभ करें

root@kitploit:~
podman build -t tomcat-cve-2026-43512 .
podman run -d --name tomcat-vuln -p 8080:8080 tomcat-cve-2026-43512

Tomcat के प्रारंभ होने तक कुछ सेकंड प्रतीक्षा करें, फिर सत्यापित करें कि यह चालू है:

root@kitploit:~
curl -si http://localhost:8080/protected/secret.html | head -1
# अपेक्षित: HTTP/1.1 401

2. शोषण चलाएँ

root@kitploit:~
cd exploit
go run exploit.go \
  -target   http://localhost:8080 \
  -path     /protected/secret.html \
  -username ghost

उपलब्ध फ़्लैग:

फ़्लैगडिफ़ॉल्टविवरण
-targethttp://localhost:8080Tomcat आधार URL
-path/protected/संरक्षित संसाधन का पथ
-usernameghostउपयोग करने के लिए उपयोगकर्ता नाम — tomcat-users.xml में मौजूद नहीं होना चाहिए

3. वर्बोज़ Tomcat लॉगिंग सक्षम करें (वैकल्पिक)

आंतरिक प्रमाणीकरण स्थिति देखने के लिए, एक logging.properties फ़ाइल जोड़ें और इसे माउंट करें:

root@kitploit:~
org.apache.catalina.authenticator.level = FINE
org.apache.catalina.realm.level = FINE
root@kitploit:~
podman run -d --name tomcat-vuln -p 8080:8080 \
  -v ./logging.properties:/usr/local/tomcat/conf/logging.properties:ro \
  tomcat-cve-2026-43512

लॉग सीधे डाइजेस्ट तुलना परिणाम दिखाएगा, पुष्टि करेगा कि हैश मेल खाते हैं या नहीं।

4. सफाई

root@kitploit:~
podman stop tomcat-vuln && podman rm tomcat-vuln

अपेक्षित आउटपुट

root@kitploit:~
============================================================
 CVE-2026-43512 — Tomcat DIGEST Auth Bypass PoC
============================================================
 Target   : http://localhost:8080/protected/secret.html
 Username : "ghost"  (must NOT exist in tomcat-users.xml)
 Password : "null"   (literal string)
------------------------------------------------------------
[1] Sending unauthenticated request to obtain DIGEST challenge...
[+] HTTP 401 received — DIGEST challenge:
    Digest realm="UserDatabase", qop="auth", nonce="...", opaque="..."

[*] realm="UserDatabase"  nonce="..."  qop="auth"  algorithm="MD5"

[2] Computing DIGEST response with password="null"...
    Digest username="ghost", realm="UserDatabase", ...

[3] Sending request with crafted DIGEST credentials...
------------------------------------------------------------
[✗] HTTP 401 — exploit failed.
    The UserDatabaseRealm provides a second line of defence:
    getPrincipal("ghost") returned null after the digest matched.
============================================================

संदर्भ

संसाधनलिंक
Apache Tomcat सुरक्षा सलाहकारhttps://tomcat.apache.org/security-9.html
फिक्स कमिटhttps://github.com/apache/tomcat/commit/6565a6cb6499e56fe2f34457cec99f9d1c4f39e9
RealmBase.java (मुख्य)https://github.com/apache/tomcat/blob/main/java/org/apache/catalina/realm/RealmBase.java
RFC 2617 — HTTP डाइजेस्ट प्रमाणीकरणhttps://datatracker.ietf.org/doc/html/rfc2617
पूर्ण विश्लेषण — ब्लॉग पोस्टhttps://return-zero.dev/posts/cve-2026-43512

अस्वीकरण

यह भंडार केवल शैक्षिक उद्देश्यों और स्थानीय शोषणक्षमता विश्लेषण के लिए है। सभी परीक्षण एक स्व-होस्टेड कंटेनर वातावरण के विरुद्ध किए गए थे। इस PoC को उन प्रणालियों के विरुद्ध न चलाएँ जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित प्राधिकरण नहीं है।

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