
चलते-फिरते HTTP/HTTPS ट्रैफ़िक को कैप्चर करने, हेरफेर करने और पुनः चलाने के लिए एक बहुमुखी और पोर्टेबल प्रॉक्सी।
विशेषताएँ • स्थापना • उपयोग • Proxify चलाना • SSL प्रमाणपत्र स्थापित करना • Proxify के अनुप्रयोग • Discord से जुड़ें
तेज़ तैनाती के लिए स्विस आर्मी चाकू प्रॉक्सी। DSL भाषा, अपस्ट्रीम HTTP/Socks5 प्रॉक्सी के माध्यम से अनुरोध/प्रतिक्रिया डंप, फ़िल्टरिंग और हेरफेर जैसे कई ऑपरेशनों का समर्थन करता है। इसके अतिरिक्त, एक रीप्ले उपयोगिता डंप किए गए ट्रैफ़िक (सही डोमेन नाम वाले अनुरोध/प्रतिक्रिया) को BurpSuite या किसी अन्य प्रॉक्सी में आयात करने की अनुमति देती है, बस अपस्ट्रीम प्रॉक्सी को proxify पर सेट करके।
चलाने के लिए तैयार बाइनरी डाउनलोड करें या GO का उपयोग करके इंस्टॉल/बिल्ड करें
go install -v github.com/projectdiscovery/proxify/cmd/proxify@latest
proxify -h
यह टूल के लिए सहायता प्रदर्शित करेगा। यहां वे सभी स्विच हैं जिनका यह समर्थन करता है।
तेज़ तैनाती के लिए स्विस आर्मी चाकू प्रॉक्सी। DSL भाषा, अपस्ट्रीम HTTP/Socks5 प्रॉक्सी के माध्यम से अनुरोध/प्रतिक्रिया डंप, फ़िल्टरिंग और हेरफेर जैसे कई ऑपरेशनों का समर्थन करता है।
उपयोग:
./proxify [फ़्लैग्स]
फ़्लैग्स:
आउटपुट:
-sr, -store-response आउटपुट निर्देशिका में कच्चे HTTP अनुरोध/प्रतिक्रिया को स्टोर करें (डिफ़ॉल्ट proxify_logs)
-o, -output proxify लॉग स्टोर करने के लिए आउटपुट फ़ाइल (डिफ़ॉल्ट proxify_logs.jsonl)
-of, -output-format string आउटपुट प्रारूप (jsonl/yaml) (डिफ़ॉल्ट "jsonl")
-dump-req आउटपुट फ़ाइल में केवल HTTP अनुरोध डंप करें
-dump-resp आउटपुट फ़ाइल में केवल HTTP प्रतिक्रिया डंप करें
-oca, -out-ca string फ़ाइल नाम पर CA फ़ाइल जनरेट और सेव करें
अपडेट:
-up, -update proxify को नवीनतम संस्करण में अपडेट करें
-duc, -disable-update-check स्वचालित proxify अपडेट जाँच अक्षम करें
फ़िल्टर:
-req-fd, -request-dsl string[] अनुरोध फ़िल्टर DSL
-resp-fd, -response-dsl string[] प्रतिक्रिया फ़िल्टर DSL
-req-mrd, -request-match-replace-dsl string[] अनुरोध मैच-रिप्लेस DSL
-resp-mrd, -response-match-replace-dsl string[] प्रतिक्रिया मैच-रिप्लेस DSL
नेटवर्क:
-ha, -http-addr string HTTP आईपी और पोर्ट पता (ip:port) (डिफ़ॉल्ट "127.0.0.1:8888")
-sa, -socks-addr SOCKS आईपी और पोर्ट पता (ip:port) (डिफ़ॉल्ट 127.0.0.1:10080)
-da, -dns-addr string DNS आईपी और पोर्ट पता (ip:port)
-dm, -dns-mapping string डोमेन से आईपी DNS मैपिंग (जैसे domain:ip,domain:ip,..)
-r, -resolver string उपयोग करने के लिए कस्टम DNS रिज़ॉल्वर (ip:port)
प्रॉक्सी:
-hp, -http-proxy string[] अपस्ट्रीम HTTP प्रॉक्सी (जैसे http://proxy-ip:proxy-port)
-sp, -socks5-proxy string[] अपस्ट्रीम SOCKS5 प्रॉक्सी (जैसे socks5://proxy-ip:proxy-port)
-c int अगले अपस्ट्रीम प्रॉक्सी पर स्विच करने से पहले अनुरोधों की संख्या (डिफ़ॉल्ट 1)
निर्यात:
-max-size int अधिकतम निर्यात डेटा आकार (अनुरोध/प्रतिक्रिया छोटे किए जाएंगे) (डिफ़ॉल्ट 9223372036854775807)
कॉन्फ़िगरेशन:
-config string proxify कॉन्फ़िगरेशन फ़ाइल का पथ
-ec, -export-config string proxify निर्यात मॉड्यूल कॉन्फ़िगरेशन फ़ाइल (डिफ़ॉल्ट "$CONFIG/export-config.yaml")
-config-directory string डिफ़ॉल्ट कॉन्फ़िग पथ को ओवरराइड करें (डिफ़ॉल्ट "$CONFIG/proxify")
-cert-cache-size int कैश करने के लिए प्रमाणपत्रों की संख्या (डिफ़ॉल्ट 256)
-a, -allow string[] प्रॉक्सी किए जाने वाले IP/CIDR की अनुमत सूची
-d, -deny string[] प्रॉक्सी किए जाने वाले IP/CIDR की अस्वीकृत सूची
-pt, -passthrough string[] पासथ्रू डोमेन की सूची
डीबग:
-nc, -no-color कोई रंग नहीं
-version संस्करण
-silent शांत
-v, -verbose विस्तृत
-vv, -very-verbose बहुत विस्तृत
पोर्ट 8888 पर एक HTTP प्रॉक्सी चलाता है:
proxify
कस्टम पोर्ट 1111 पर एक HTTP प्रॉक्सी चलाता है:
proxify -http-addr ":1111"
-pt फ़्लैग का उपयोग TLS कनेक्शन को समाप्त करने का प्रयास किए बिना एन्क्रिप्टेड ट्रैफ़िक को पासथ्रू (स्किप) करने के लिए किया जा सकता है।
proxify -pt '(.*\.)?google\.co.in.*'
पोर्ट 8888 पर एक HTTP प्रॉक्सी चलाता है और ट्रैफ़िक को पोर्ट 8080 पर burp को अग्रेषित करता है:
proxify -http-proxy http://127.0.0.1:8080
पोर्ट 8888 पर एक HTTP प्रॉक्सी चलाता है और ट्रैफ़िक को TOR नेटवर्क पर अग्रेषित करता है:
proxify -socks5-proxy 127.0.0.1:9050
Proxify तीन आउटपुट प्रारूपों का समर्थन करता है: JSONL, YAML और फ़ाइलें.
JSONL (डिफ़ॉल्ट):
जेसन लाइन्स प्रारूप में प्रत्येक HTTP अनुरोध/प्रतिक्रिया जोड़ी को एक एकल पंक्ति में json ऑब्जेक्ट के रूप में संग्रहीत किया जाता है।
{"timestamp":"2024-02-20T01:56:49+05:30","url":"https://scanme.sh:443","request":{"header":{"Connection":"close","User-Agent":"curl/8.1.2","host":"scanme.sh:443","method":"CONNECT","path":"","scheme":"https"},"raw":"CONNECT scanme.sh:443 HTTP/1.1\r\nHost: scanme.sh:443\r\nConnection: close\r\nUser-Agent: curl/8.1.2\r\n\r\n"},"response":{"header":{"Content-Length":"0"},"raw":"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"}}
{"timestamp":"2024-02-20T01:56:49+05:30","url":"https://scanme.sh/","request":{"header":{"Accept":"*/*","Connection":"close","User-Agent":"curl/8.1.2","host":"scanme.sh","method":"GET","path":"/","scheme":"https"},"raw":"GET / HTTP/1.1\r\nHost: scanme.sh\r\nAccept: */*\r\nConnection: close\r\nUser-Agent: curl/8.1.2\r\n\r\n"},"response":{"header":{"Content-Type":"text/plain; charset=utf-8","Date":"Mon, 19 Feb 2024 20:26:49 GMT"},"body":"ok","raw":"HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/plain; charset=utf-8\r\nDate: Mon, 19 Feb 2024 20:26:49 GMT\r\n\r\n"}}
Yaml MultiDoc:
YAML MultiDoc प्रारूप में, प्रत्येक HTTP अनुरोध और प्रतिक्रिया जोड़ी को एक अलग दस्तावेज़ के रूप में समाहित किया जाता है। आउटपुट yaml फ़ाइल में सभी दस्तावेज़ स्ट्रीम पार्सिंग और उपभोग की अनुमति देने के लिए --- द्वारा अलग किए गए हैं।
proxify -output-format yaml
timestamp: "2024-02-20T01:40:40+05:30"
url: https://scanme.sh:443
request:
header:
Connection: close
User-Agent: curl/8.1.2
host: scanme.sh:443
method: CONNECT
path: ""
scheme: https
body: ""
raw: "CONNECT scanme.sh:443 HTTP/1.1\r\nHost: scanme.sh:443\r\nConnection: close\r\nUser-Agent: curl/8.1.2\r\n\r\n"
response:
header:
Content-Length: "0"
body: ""
raw: "HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"
---
timestamp: "2024-02-20T01:40:40+05:30"
...
फ़ाइलें:
फ़ाइल प्रारूप में, प्रत्येक HTTP अनुरोध और प्रतिक्रिया जोड़ी को अनुरोध के बाद प्रतिक्रिया के साथ अलग-अलग फ़ाइलों में संग्रहीत किया जाता है। फ़ाइल नाम {{Host}}-{{randstr}}.txt प्रारूप में होते हैं। इसके अतिरिक्त, फ़ाइल में अनुरोध के विशिष्ट भाग को सहेजने के लिए dump-req या dump-resp फ़्लैग का उपयोग किया जा सकता है।
proxify -store-response
नोट:
-store-responseका उपयोग करते समय jsonl और फ़ाइलें दोनों उत्पन्न होते हैं।
Proxify होस्टनाम को विशिष्ट पतों पर मैप करने और किसी अन्य डोमेन नाम के लिए अपस्ट्रीम dns सर्वर को परिभाषित करने के लिए एम्बेडेड DNS रिज़ॉल्वर का समर्थन करता है।
एम्बेडेड dns सर्वर का उपयोग करके पोर्ट 8888 पर एक HTTP प्रॉक्सी चलाता है जो पोर्ट 53 पर सुनता है और www.google.it को 192.168.1.1 पर रिज़ॉल्व करता है और अन्य सभी fqdn को 1.1.1.1 पर अग्रेषित किया जाता है:
proxify -dns-addr ":53" -dns-mapping "www.google.it:192.168.1.1" -dns-resolver "1.1.1.1:53"
इस सुविधा का उपयोग उदाहरण के लिए replay उपयोगिता द्वारा कनेक्शनों को हाईजैक करने और प्रतिक्रियाओं का अनुकरण करने के लिए किया जाता है। यह निजी dns सर्वरों के साथ आंतरिक मूल्यांकन के दौरान उपयोगी हो सकता है। डोमेन नाम के रूप में * का उपयोग सभी dns अनुरोधों से मेल खाता है।
यदि अनुरोध या प्रतिक्रिया फ़िल्टर से मेल खाती है तो डंप को .match.txt प्रत्यय से टैग किया जाता है:
proxify -request-dsl "contains(request,'firefox')" -response-dsl "contains(response, md5('test'))"
Proxify DSL भाषा के साथ अनुरोध और प्रतिक्रियाओं को तुरंत संशोधित करने का समर्थन करता है।
यहां अनुरोध से firefox शब्द को chrome से बदलने का एक उदाहरण है:
proxify -request-match-replace-dsl "replace(request,'firefox','chrome')"
प्रतिक्रिया के regex-आधारित प्रतिस्थापन का उपयोग करने वाला एक और उदाहरण:
proxify -response-match-replace-dsl "replace_regex(response, '^authentication failed$', 'authentication ok')"
यदि निर्दिष्ट नहीं किया गया है तो सभी डंप किए गए अनुरोधों/प्रतिक्रियाओं को गंतव्य URL (http://127.0.0.1:8080) पर रीप्ले करें। इसे काम करने के लिए burp को proxify को अपस्ट्रीम प्रॉक्सी के रूप में उपयोग करने के लिए कॉन्फ़िगर करना आवश्यक है, क्योंकि यह dns रिज़ॉल्यूशन को हाईजैक करने और डंप किए गए अनुरोध के साथ रिमोट सर्वर का अनुकरण करने का ध्यान रखेगा। यह burp इतिहास में सभी अनुरोधों/प्रतिक्रियाओं को ठीक वैसे ही रखने की अनुमति देता है जैसे कि वे मूल रूप से इसके माध्यम से भेजे गए थे, उदाहरण के लिए क्लाउड पर रिमोट इंटरसेप्शन करने और burp के भीतर सभी परिणामों को स्थानीय रूप से मर्ज करने की अनुमति देता है।
replay -output "logs/"
Proxify के लिए एक प्रमाणपत्र प्राधिकरण उत्पन्न होता है जो डिफ़ॉल्ट रूप से फ़ोल्डर ~/.config/proxify/ में संग्रहीत होता है, इसे -config फ़्लैग द्वारा मैन्युअल रूप से निर्दिष्ट किया जा सकता है। उत्पन्न प्रमाणपत्र को proxify से जुड़े ब्राउज़र में http://proxify/cacert पर जाकर आयात किया जा सकता है।
रूट प्रमाणपत्र स्थापित करने के चरण अन्य प्रॉक्सी टूल के समान हैं, जिसमें सर्ट को सिस्टम विश्वसनीय रूट स्टोर में जोड़ना शामिल है।
Proxify का उपयोग कई स्थानों पर किया जा सकता है, यहां कुछ सामान्य उदाहरण दिए गए हैं जहाँ Proxify काम आता है:
पोर्ट 8888 पर एक HTTP प्रॉक्सी चलाता है और ट्रैफ़िक को पोर्ट 8080 पर burp को अग्रेषित करता है:
proxify -http-proxy http://127.0.0.1:8080
BurpSuite से, सभी ट्रैफ़िक को वापस proxify पर अग्रेषित करने के लिए अपस्ट्रीम प्रॉक्सी सेट करें:
User Options > Upstream Proxy > Proxy & Port > 127.0.0.1 & 8888
अब सभी अनुरोध/प्रतिक्रिया इतिहास logs फ़ोल्डर में संग्रहीत होगा जिसका उपयोग बाद में पोस्ट-प्रोसेसिंग के लिए किया जा सकता है।
जब आप एप्लिकेशन ब्राउज़ करते हैं, तो आप सभी HTTP अनुरोध/प्रतिक्रिया को फ़ाइल में संग्रहीत करने के लिए ब्राउज़र को proxify पर इंगित कर सकते हैं।
डिफ़ॉल्ट या अपनी इच्छित किसी भी पोर्ट पर proxify प्रारंभ करें,
proxify -output chrome-logs
macOS में Chrome ब्राउज़र प्रारंभ करें,
/Applications/Chromium.app/Contents/MacOS/Chromium --ignore-certificate-errors --proxy-server=http://127.0.0.1:8888 &
डिफ़ॉल्ट या अपनी इच्छित किसी भी पोर्ट पर proxify प्रारंभ करें:
proxify -output ffuf-logs
FFuF को proxify की ओर इंगित प्रॉक्सी के साथ चलाएं:
ffuf -x http://127.0.0.1:8888 FFUF_CMD_HERE
Proxify को projectdiscovery टीम ने 🖤 से बनाया है। सामुदायिक योगदानों ने इस परियोजना को वह बनाया है जो यह है। अधिक विवरण के लिए Thanks.md फ़ाइल देखें।