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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
http-garden — HTTP कार्यान्वयन के लिए विभेदक परीक्षण ढांचा | Kitploit
उपकरण/GitHubGitHub/narfindustries/http-garden
भेद्यता विश्लेषणगतिशील कोड विश्लेषण (DAST)वेब सुरक्षाफज़िंग
GitHubnarfindustries/http-garden

http-garden

HTTP कार्यान्वयन के लिए विभेदक परीक्षण ढांचा

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

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

सभी देखें →

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

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

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

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

The HTTP Garden

The HTTP Garden, HTTP सर्वरों और प्रॉक्सियों का एक संग्रह है, जिन्हें संयोजनीय (composable) बनाने के लिए कॉन्फ़िगर किया गया है। साथ ही, इसमें उनके साथ इंटरैक्ट करने के लिए स्क्रिप्ट भी शामिल हैं, जिससे कमज़ोरियों को खोजना बहुत बहुत आसान हो जाता है। HTTP Garden के साथ खोजी जा सकने वाली कमज़ोरियों के कुछ शानदार डेमो के लिए, हमारी ShmooCon 2024 वार्ता देखें।

Acknowledgements

हम इस प्रोजेक्ट को संभव बनाने के लिए Galois, Trail of Bits, Narf Industries, और Dartmouth College में अपने मित्रों को धन्यवाद देना चाहते हैं।

यह सामग्री रक्षा उन्नत अनुसंधान परियोजना एजेंसी (DARPA) द्वारा अनुबंध संख्या HR0011-19-C-0076 के तहत समर्थित कार्य पर आधारित है।

Getting Started

Dependencies

  1. The HTTP Garden x86_64 और AArch64 Linux पर चलता है, और अन्य प्लेटफ़ॉर्म पर इसका परीक्षण नहीं किया गया है।
  2. लक्ष्य सर्वर Docker कंटेनरों में बनाए और चलाए जाते हैं, इसलिए आपको Docker की आवश्यकता होगी।
  3. आपको Python 3.12+ और निम्नलिखित Python पैकेजों की भी आवश्यकता होगी, जिन्हें आप PyPI (यानी pip के साथ) या अपने सिस्टम पैकेज मैनेजर से प्राप्त कर सकते हैं:
  • docker
    • Docker के साथ इंटरैक्ट करने के लिए
  • pyyaml
    • yaml पार्स करने के लिए
  • tqdm
    • प्रोग्रेस बार के लिए
  • यदि आप Python पैकेज अपने सिस्टम पैकेज मैनेजर से इंस्टॉल कर रहे हैं, तो ध्यान रखें कि सिस्टम के आधार पर पैकेज नामों के आगे py3-, python3-, या python- उपसर्ग लगाने की आवश्यकता हो सकती है।

    Running

    • कुछ सर्वर और प्रॉक्सी बनाएँ और चालू करें:
    root@kitploit:~
    ./garden.sh start --build gunicorn hyper nginx haproxy
    
    • दूसरे शेल से, repl शुरू करें:
    root@kitploit:~
    ./garden.sh repl
    
    • HAProxy के माध्यम से एक बुनियादी GET अनुरोध भेजें, फिर परिणाम को Gunicorn, Hyper, और Nginx ओरिजिन सर्वरों को भेजें, और प्रदर्शित करें कि क्या उनकी व्याख्याएँ मेल खाती हैं:
    root@kitploit:~
    garden> payload 'GET / HTTP/1.1\r\nHOST: a\r\n\r\n' | transduce haproxy | fanout | grid
    'GET / HTTP/1.1\r\nHOST: a\r\n\r\n'
    ⬇️ haproxy
    'GET / HTTP/1.1\r\nhost: a\r\n\r\n'
    gunicorn: [
        HTTPRequest(
            method=b'GET', uri=b'/', version=b'1.1',
            headers=[
                (b'host', b'a'),
            ],
            body=b'',
        ),
    ]
    hyper: [
        HTTPRequest(
            method=b'GET', uri=b'/', version=b'1.1',
            headers=[
                (b'host', b'a'),
            ],
            body=b'',
        ),
    ]
    nginx: [
        HTTPRequest(
            method=b'GET', uri=b'/', version=b'1.1',
            headers=[
                (b'host', b'a'),
                (b'content-length', b''),
                (b'content-type', b''),
            ],
            body=b'',
        ),
    ]
             g
             u
             n
             i h n
             c y g
             o p i
             r e n
             n r x
            +-----
    gunicorn|✓ ✓ ✓
    hyper   |  ✓ ✓
    nginx   |    ✓
    

    ऐसा लगता है कि वे सभी सहमत हैं। (ध्यान दें कि भले ही Nginx ने content-length और content-type हेडर जोड़े हों, Garden इस बात से अवगत है और इस महत्वहीन विसंगति को grid आउटपुट में दिखने नहीं देता।)

    आइए एक ऐसा payload आज़माएँ जो chunked मैसेज बॉडी में केवल LF लाइन एंडिंग का उपयोग करता है। यह स्पेक में अनुमति नहीं है।

    root@kitploit:~
    garden> payload 'POST / HTTP/1.1\r\nHost: a\r\nTransfer-Encoding: chunked\r\n\r\n0\n\r\n' | fanout | grid
    gunicorn: [
        HTTPResponse(version=b'1.1', method=b'400', reason=b'Bad Request'),
    ]
    hyper: [
    ]
    nginx: [
        HTTPRequest(
            method=b'POST', uri=b'/', version=b'1.1',
            headers=[
                (b'transfer-encoding', b'chunked'),
                (b'host', b'a'),
                (b'content-length', b'0'),
                (b'content-type', b''),
            ],
            body=b'',
        ),
    ]
             g
             u
             n
             i h n
             c y g
             o p i
             r e n
             n r x
            +-----
    gunicorn|✓ ✓ X
    hyper   |  ✓ X
    nginx   |    ✓
    

    ठीक है, तो Gunicorn ने 400 का जवाब दिया, Hyper ने कोई जवाब नहीं दिया, और Nginx ने अनुरोध स्वीकार कर लिया। यह Nginx के लेखकों द्वारा स्पेक का उल्लंघन है, जिसे वे ठीक करने की परवाह नहीं करते।

    आपने शायद यह भी देखा होगा कि भले ही Gunicorn और Hyper का जवाब बिल्कुल एक जैसा नहीं था, फिर भी पहले grid आउटपुट में वे सहमत दिखाई दिए। ऐसा इसलिए है क्योंकि उनकी प्रतिक्रियाएँ मूलतः समतुल्य हैं (संदेश की अस्वीकृति), और Garden इस बात को ध्यान में रखता है।

    Directory Layout

    images

    images निर्देशिका में Garden के प्रत्येक HTTP सर्वर और ट्रांसड्यूसर के लिए एक उपनिर्देशिका होती है। प्रत्येक लक्ष्य को अपनी स्वयं की Docker इमेज मिलती है। जब संभव हो, सभी प्रोग्राम स्रोत कोड से बनाए जाते हैं। ताकि हम प्रत्येक लक्ष्य के कई संस्करण आसानी से बना सकें, सभी लक्ष्यों को एक रिपॉजिटरी URL (APP_REPO), ब्रांच नाम (APP_BRANCH), और कमिट हैश (APP_VERSION) के साथ पैरामीट्रिज़्ड किया जाता है।

    tools

    tools निर्देशिका में वे स्क्रिप्ट होती हैं जिनका उपयोग सर्वरों के साथ इंटरैक्ट करने के लिए किया जाता है। इसमें आपको मिलेंगे

    • probe_quirks.py: परीक्षण के तहत सिस्टमों में हानिरहित HTTP पार्सिंग क्वर्क्स को सूचीबद्ध करने के लिए एक स्क्रिप्ट, जिन्हें फ़ज़िंग के दौरान अनदेखा किया जाना है,
    • repl.py: HTTP Garden के लिए प्राथमिक उपयोगकर्ता इंटरफ़ेस,
    • update.py: docker-compose.yml में कमिट हैश अपडेट करने के लिए एक स्क्रिप्ट,
    • ...और कुछ और स्क्रिप्ट जो उपयोगकर्ता-उन्मुख नहीं हैं।

    Targets

    HTTP Servers

    |-| | aiohttp | | apache_httpd | | apache_tomcat | | appweb | | aws_c_http | | cpp_httplib | | eclipse_grizzly | | eclipse_jetty | | fasthttp | | go_stdlib | | gunicorn | | h2o | | haproxy_fcgi | | hyper | | hypercorn | | ktor | | libevent | | libmicrohttpd | | libsoup | | lighttpd | | mongoose | | netty | | nginx | | node_stdlib | | openbsd_httpd | | openlitespeed | | openwrt_uhttpd | | protocol_http1 | | puma | | tornado | | twisted | | undertow | | uvicorn | | waitress | | webrick | | yahns |

    HTTP Transducers

    |-| | apache_httpd_proxy | | apache_traffic_server | | envoy | | go_stdlib_proxy | | h2o_proxy | | haproxy | | lighttpd_proxy | | nghttpx | | nginx_proxy | | openlitespeed_proxy | | pound | | squid | | varnish | | yahns_proxy |

    Omissions

    निम्नलिखित Garden से कुछ उल्लेखनीय अपवादों के स्पष्टीकरण हैं:

    नामतर्क
    Microsoft का कोई भी उत्पादMSRC ने हमें बताया "HTTP स्मगलिंग को कमज़ोरी नहीं माना जाता," और मुझे Microsoft की मदद करने की कोई विशेष आवश्यकता महसूस नहीं होती।
    unicornyahns के समान HTTP पार्सर का उपयोग करता है।
    SwiftNIOHTTP पार्सिंग के लिए llhttp का उपयोग करता है, जिसे पहले से ही node_stdlib द्वारा कवर किया जाता है।
    BunHTTP पार्सिंग के लिए picohttpparser का उपयोग करता है, जिसे पहले से ही h2o द्वारा कवर किया जाता है।
    DenoHTTP पार्सिंग के लिए hyper का उपयोग करता है, जो पहले से ही Garden में है।
    DaphneHTTP पार्सिंग के लिए twisted का उपयोग करता है, जो पहले से ही Garden में है।
    pitchforkyahns के समान पार्सर का उपयोग करता है।
    nghttpxHTTP पार्सिंग के लिए lhttp का उपयोग करता है, जिसे पहले से ही node_stdlib द्वारा कवर किया जाता है।
    Cherootहमारी रिपोर्टों को अनदेखा करता है।
    CherryPyHTTP पार्सिंग के लिए cheroot का उपयोग करता है।
    libhttpserverHTTP पार्सिंग के लिए libmicrohttpd का उपयोग करता है, जो पहले से ही Garden में है।
    WerkzeugHTTP पार्सिंग के लिए CPython stdlib का उपयोग करता है, जो पहले से ही Garden में है।

    Results

    Garden द्वारा खोजे गए बगों की पूरी सूची के लिए TROPHIES.md देखें।

    टूल डाउनलोड करें
    CaddyHTTP पार्सिंग के लिए Go stdlib का उपयोग करता है, जो पहले से ही Garden में है।
    TengineNginx के HTTP पार्सर का उपयोग करता है।
    OpenRestyNginx के HTTP पार्सर का उपयोग करता है।
    Google Cloud Global External Application Load BalancerEnvoy पर आधारित है।
    Google Cloud Regional External Application Load BalancerEnvoy पर आधारित है।
    Phusion PassengerHTTP पार्सिंग के लिए llhttpd का उपयोग करता है, जिसे पहले से ही node_stdlib द्वारा कवर किया जाता है।
    passimHTTP पार्सिंग के लिए libsoup का उपयोग करता है, जो पहले से ही Garden में है।
    boaअनुरक्षण नहीं किया जाता।
    Ulfiuslibmicrohttpd का उपयोग करता है, जो पहले से ही Garden में है।
    Vultr Load Balancerयह केवल HAProxy है, जो पहले से ही Garden में है।
    VMWare Avi Load Balancerयह केवल Nginx है, जो पहले से ही Garden में है।
    Sanichttptools का उपयोग करता है, जिसे पहले से ही Uvicorn द्वारा कवर किया जाता है।
    CPython http.serverप्रोडक्शन उपयोग के लिए अभिप्रेत नहीं है।
    openjdk_stdlibकोई सुसंगत कमज़ोरी प्रकटीकरण चैनल प्रदान नहीं करता।
    dart_stdlibपिछली रिपोर्टों को अनदेखा किया।
    eventletHTTP लाइब्रेरी CPython stdlib वाली लाइब्रेरी का एक फ़ोर्क मात्र है।
    uwsgiचंक्ड मैसेज बॉडी का समर्थन नहीं करता।