
स्मार्ट ssrf स्कैनर विभिन्न विधियों का उपयोग करता है जैसे post और get में parameter brute forcing...
यह उपकरण अनुरोध के विभिन्न भागों (पथ, होस्ट, हेडर, पोस्ट और गेट पैरामीटर) में पूर्वनिर्धारित सेटिंग्स का उपयोग करके SSRF की खोज करता है।
example.app-settings.conf का नाम बदलकर app-settings.conf करें और सेटिंग्स समायोजित करें। सबसे महत्वपूर्ण सेटिंग कॉलबैक URL है। मैं burp collaborator का उपयोग करने की सलाह देता हूँ। फिर आप अपने URL को config/url-to-test.txt में जोड़ सकते हैं। यहाँ स्क्रिप्ट डोमेन के साथ-साथ पथ और क्वेरी पैरामीटर वाले URL को भी स्वीकार करता है। यदि आप चाहें तो अपने कुकीज़ को config/cookie-jar.txt में जोड़ सकते हैं और अपने अनुरोधों के लिए अतिरिक्त हेडर जोड़ सकते हैं। पोस्ट और गेट अनुरोधों में उपयोग की जाने वाली ब्रूट फोर्स सूची वर्तमान में छोटी है, मुझे नहीं लगता कि 2000 पैरामीटर जोड़ना बुद्धिमानी है। हमें उन पर ध्यान केंद्रित करना चाहिए जिनमें असुरक्षित होने की सबसे अधिक संभावना है। यदि आप ऐसा नहीं सोचते हैं: बस अपने खुद के जोड़ें!
यह उपकरण CLI के माध्यम से किसी भी तर्क की अपेक्षा नहीं करता है, इसलिए बस टाइप करें:
python3 extended-ssrf-search.py
बहुत सारे विकल्प और सेटिंग्स सेट करना संभव है, तो यहाँ कुछ स्पष्टीकरण दिए गए हैं।
मुख्य कॉन्फ़िग फ़ाइल "app-settings.conf" है, सब कुछ उसी फ़ाइल में करना होता है! इसके अलावा, कुछ अन्य फ़ाइलें हैं जो हेडर, URL और कुकीज़ जैसे अधिक जटिल डेटा सेट करने की अनुमति देती हैं।
config/cookie-jar.txt
इस फ़ाइल का उपयोग कुकी स्ट्रिंग जोड़ने के लिए करें। मैं आमतौर पर वह कॉपी करता हूँ जो आप हर burp अनुरोध में देख सकते हैं। कृपया केवल "Cookie:" हेडर का मान कॉपी करें। एक नमूना इनपुट डिफ़ॉल्ट फ़ाइल में है।
config/http-headers.txt
यह फ़ाइल उन HTTP हेडर को परिभाषित करती है जो अनुरोध में जोड़े जाते हैं और उनमें हेरफेर किया जाता है (प्रत्येक में पेलोड जोड़ा जाता है)। सबसे महत्वपूर्ण हेडर पहले से फ़ाइल में हैं। लेकिन और जोड़ने में संकोच न करें।
config/parameters.txt
उपकरण में गेट और पोस्ट पैरामीटर को ब्रूट फोर्स करने का विकल्प है। उस स्थिति में उन पैरामीटर (क्वेरी स्ट्रिंग में मौजूद पैरामीटर सहित) का उपयोग किया जाएगा। प्रत्येक पैरामीटर को मान के रूप में पेलोड मिलता है। सबसे महत्वपूर्ण पहले से उस फ़ाइल में हैं।
config/static-request-headers.txt
वे हेडर हर अनुरोध में जोड़े जाते हैं, लेकिन उनमें हेरफेर नहीं किया जाएगा। वे स्थिर हैं। प्राधिकरण या बियरर कुकीज़ जोड़ने के लिए यह सबसे अच्छी जगह है। प्रति पंक्ति एक (Key: Value)!
config/urls-to-test.txt
यह वह फ़ाइल है जिसकी आपको आवश्यकता है! कृपया यहाँ स्कैन करने के लिए अपने लिंक जोड़ें। निम्नलिखित प्रारूपों की अनुमति है:
जब अंतिम मामला पाया जाता है तो "http://" जोड़ा जाता है। यह उपकरण URL की एक अच्छी सूची के साथ काम करने के लिए है। एक प्राप्त करने का एक अच्छा तरीका बस burp का उपयोग करके इसे निर्यात करना है। फिर आपके पास URL की एक मान्य सूची होगी। आपको बस अपने कुकीज़ जोड़ने की आवश्यकता है।
app-settings.conf प्रोग्राम वर्कफ़्लो को परिभाषित करता है। यह सबसे महत्वपूर्ण फ़ाइल है, आप वहाँ विभिन्न मॉड्यूल को सक्रिय/निष्क्रिय कर सकते हैं।
CallbackHost
वह URL/होस्ट जिस पर सभी DNS और HTTP अनुरोध वापस भेजे जाते हैं - मैं यहाँ ज्यादातर burp collaborator का उपयोग करता हूँ, लेकिन DNSBin या आपका अपना सर्वर भी बिल्कुल सही है।
HTTPMethod
अनुरोध विधि को परिभाषित करता है। मान्य विकल्प हैं: GET, POST, PUT, DELETE, PATCH, GET, OPTIONS अमान्य मान बड़ी त्रुटियाँ उत्पन्न करेंगे क्योंकि http.client अन्य विधियों की अनुमति नहीं देता है! मैं यहाँ जाँच नहीं करता कि आपने कुछ गलत किया है या नहीं ;)
HTTPTimeout
कुछ अनुरोध लंबे समय ले सकते हैं। यहाँ आप एक अनुरोध का अधिकतम निष्पादन समय परिभाषित कर सकते हैं। मैं 2 से 6 सेकंड के बीच मान सुझाता हूँ।
MaxThreads
जितने अधिक थ्रेड, स्क्रिप्ट उतनी तेज़ - लेकिन चूँकि हम बहुत सारे कनेक्शनों से निपट रहे हैं, मैं आमतौर पर इसे अपने निजी कंप्यूटर पर 10 से नीचे और अपने VPS पर लगभग 30 रखता हूँ।
ShuffleTests
विशेष रूप से URL की एक बड़ी सूची से निपटने पर इसे "true" पर सेट करने से सभी बनाए गए परीक्षण शफ़ल हो जाएंगे। इस तरह एक ही होस्ट पर इतना हमला नहीं होगा। यदि आप केवल एक होस्ट स्कैन करते हैं, तो इससे कोई फर्क नहीं पड़ता।
GetChunkSize
बड़ी पैरामीटर सूचियों के साथ काम करने पर यह सुविधाजनक हो सकता है और 400 too large entity त्रुटियों को रोक सकता है।
प्रत्येक प्रवेश बिंदु को सक्रिय (true/1 पर सेट) या निष्क्रिय (false/0 पर सेट) किया जा सकता है।
InPath
उदाहरण एक GET अनुरोध दिखाता है, लेकिन आपकी सेटिंग्स के आधार पर, यह POST, PUT, DELETE, ... भी हो सकता है।
GET [INJECT HERE PAYLOAD] HTTP/1.1
...
InHost
उदाहरण एक GET अनुरोध दिखाता है, लेकिन आपकी सेटिंग्स के आधार पर, यह POST, PUT, DELETE, ... भी हो सकता है।
GET /path HTTP/1.1
Host: [INJECT HERE PAYLOAD]
...
InAdditionalHeaders
उदाहरण एक GET अनुरोध दिखाता है, लेकिन आपकी सेटिंग्स के आधार पर, यह POST, PUT, DELETE, ... भी हो सकता है।
GET /path HTTP/1.1
...
X-Forwarded-For: [INJECT HERE PAYLOAD]
InParamsGet
यहाँ विधि GET पर निश्चित है।
GET /path?[INJECT HERE PAYLOAD] HTTP/1.1
...
InParamsPost
यहाँ विधि POST पर निश्चित है।
POST /path HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
Content-Length: XXX
[INJECT HERE PAYLOAD]
InParamsPostAsJson
यहाँ विधि POST पर निश्चित है।
POST /path HTTP/1.1
...
Content-Type: application/json
Content-Length: XXX
[INJECT HERE JSON-PAYLOAD]
डिफ़ॉल्ट सेटिंग्स में यह उपकरण केवल SSRF के माध्यम से HTTP अनुरोध ट्रिगर करने का प्रयास करता है। लेकिन DNS का उपयोग करके डेटा बाहर निकालना भी संभव है, जब कोई OS कमांड इंजेक्ट किया जाता है। सबसे आम पेलोड "$(hostname)" है। कुछ विकल्प हैं जो इस प्रकार के हमले को अतिरिक्त रूप से उपयोग करने की अनुमति देते हैं।
UseExecPayload
इस सेटिंग का उपयोग करके आप उस व्यवहार को सक्रिय/निष्क्रिय कर सकते हैं।
ExecPayload
यहाँ आप अपना स्वयं का पेलोड परिभाषित कर सकते हैं, उदाहरण के लिए $(uname -a)
पहचान को थोड़ा आसान बनाने के लिए वर्तमान होस्ट और विधि (संक्षिप्त रूप में, Tests.py देखें) का संयोजन पेलोड के अंत या शुरू में जोड़ा जाता है।
Position
मान्य विकल्प "append" और "prepend" हैं!
यदि "append" चुना जाता है, तो पेलोड इस प्रकार दिखते हैं:
....burpcollaborator.net/www.attacked-domain.com-testmethod
http://....burpcollaborator.net/www.attacked-domain.com-testmethod
यदि "prepend" चुना जाता है, तो पेलोड इस प्रकार दिखते हैं:
www.attacked-domain.com-testmethod.burpcollaborator.net
http://www.attacked-domain.com-testmethod.burpcollaborator.net/
टनल का उपयोग करना भी संभव है, जैसे "127.0.0.1:8080" (Burp Proxy), Burp के भीतर सभी ट्रैफ़िक की निगरानी करने के लिए।
Active
इसे "true" पर सेट करने से स्क्रिप्ट टनल किए गए कनेक्शन का उपयोग करने के लिए मजबूर हो जाएगी।
Tunnel
यहाँ अपना प्रॉक्सी सर्वर "ip:port" सेट करें।
परिणाम निम्नलिखित है, जब आप Burp खोलते हैं तो आप अपना HTTP इतिहास देख सकते हैं:


कृपया बस एक issue बनाएँ और इसे फीचर अनुरोध के रूप में टैग करें।
क्या आपको यह उपकरण पसंद है? क्या इसने आपको बाउंटी पाने में मदद की? कुछ वापस देना/मेरा समर्थन करना चाहते हैं? क्यों नहीं!