
आपको Burp Extension Generation के बारे में जो कुछ भी चाहिए

सबसे पहले, Yeoman और generator-burp-extension को npm का उपयोग करके इंस्टॉल करें (हम मानते हैं कि आपने node.js पहले से इंस्टॉल कर लिया है)।
npm install -g yo
npm install -g generator-burp-extension
फिर अपना नया प्रोजेक्ट जनरेट करें:
yo burp-extension
जब आप अपना प्लगइन प्रोजेक्ट जनरेट करते हैं, तो जनरेटर आपसे पूछेगा कि आपके प्लगइन में कौन सी विशेषताएँ शामिल की जानी चाहिए। यदि आप बर्प एक्सटेंशन डेवलपमेंट से परिचित हैं, तो विशेषताओं के नाम काफी वर्णनात्मक होंगे, लेकिन यदि आप बर्प एक्सटेंशन में नए हैं, तो यहाँ प्रत्येक विशेषता के साथ क्या किया जा सकता है, इसका एक संक्षिप्त विवरण दिया गया है।
कस्टम टैब जो Burp के UI में जोड़ा जाएगा। आमतौर पर इसका उपयोग कुछ कार्यक्षमता जोड़ने के लिए किया जाता है (जैसे logger++ एक्सटेंशन) या उपयोगकर्ता को एक्सटेंशन को कॉन्फ़िगर करने में सक्षम बनाने के लिए।

कस्टम मैसेज एडिटर टैब जो Burp के मैसेज एडिटर UI (Repeater, Intruder...) में जोड़ा जाएगा। आमतौर पर इसका उपयोग अनुरोध/प्रतिक्रिया पेलोड में किसी प्रकार की कस्टम एडिटर/व्यूअर कार्यक्षमता प्रदान करने के लिए किया जाता है। एक उदाहरण है JSON Beutifier एक्सटेंशन।

कस्टम कॉन्टेक्स्ट मेनू, जो Burp के UI में लगभग कहीं भी राइट क्लिक करके जोड़ा जाएगा। Burp निम्नलिखित स्थितियों में से किसी में भी कॉन्टेक्स्ट मेनू दिखाने की अनुमति देता है:
इस कार्यक्षमता का एक सरल उदाहरण copy-as-python-requests एक्सटेंशन है, जो एक अनुरोध को पायथन कोड (सिर्फ एक उदाहरण) के रूप में कॉपी करने की अनुमति देता है।

लिसनर को प्रॉक्सी टूल (प्रॉक्सी लिसनर) द्वारा संसाधित किए जा रहे अनुरोधों और प्रतिक्रियाओं या किसी भी Burp टूल (HTTP लिसनर) द्वारा किए गए अनुरोधों और प्रतिक्रियाओं के बारे में सूचित किया जाएगा। एक्सटेंशन इन संदेशों का कस्टम विश्लेषण या संशोधन कर सकते हैं।
दूसरे शब्दों में, प्रॉक्सी लिसनर ब्राउज़र से Burp में आने वाले अनुरोध और Burp से ब्राउज़र में जाने वाली प्रतिक्रिया को इंटरसेप्ट करता है। HTTP लिसनर Burp से वेब सर्वर पर जाने वाले आउटगोइंग अनुरोध और वेब सर्वर से आने वाली इनकमिंग प्रतिक्रियाओं को इंटरसेप्ट करता है।

इस एक्सटेंशन की सुविधा का उपयोग करने वाला एक वास्तविक जीवन का उदाहरण प्लगइन है AutoRepeater।
कस्टम जनरेटर क्षमताओं को जोड़कर Intruder पेलोड का विस्तार करें। इस कार्यक्षमता का एक संभावित उपयोग यादृच्छिक मान्य IBAN नंबर उत्पन्न करना हो सकता है। एक वास्तविक जीवन का उदाहरण एक्सटेंशन Intruder file payload generator है (मैं इसका उपयोग नहीं करता, यह सिर्फ एक उदाहरण है)।

कस्टम प्रोसेसर क्षमताओं को जोड़कर Intruder पेलोड का विस्तार करें, एक संभावित उदाहरण स्थिर कुंजी के आधार पर AES एन्क्रिप्शन करना हो सकता है।

स्कैनिंग करते समय, Burp चेक से बेस अनुरोध पर सक्रिय या निष्क्रिय स्कैनिंग करने के लिए कहेगा, और पहचाने गए किसी भी स्कैनर मुद्दे की रिपोर्ट करेगा।
जब कोई अनुरोध सक्रिय रूप से स्कैन किया जाता है, तो स्कैनर इसे आमंत्रित करेगा, और प्रदाता को कस्टम इंसर्शन पॉइंट्स की एक सूची प्रदान करनी चाहिए जो स्कैन में उपयोग किए जाएंगे।
प्रत्येक पंजीकृत क्रिया सत्र हैंडलिंग नियम UI के भीतर उपलब्ध होगी ताकि उपयोगकर्ता इसे नियम क्रिया के रूप में चुन सके। उपयोगकर्ता किसी क्रिया को स्वयं सीधे या मैक्रो के निष्पादन के बाद आमंत्रित करना चुन सकते हैं।

लिसनर को तब सूचित किया जाएगा जब एक्सटेंशन Burp से अनलोड हो जाएगा। नोट: कोई भी एक्सटेंशन जो बैकग्राउंड थ्रेड शुरू करता है या सिस्टम संसाधन (जैसे फ़ाइलें या डेटाबेस कनेक्शन) खोलता है, उसे एक लिसनर पंजीकृत करना चाहिए और जब एक्सटेंशन अनलोड हो जाए तो थ्रेड समाप्त करना / संसाधन बंद करना चाहिए।
स्कैनर टूल द्वारा रिपोर्ट किए गए नए मुद्दों के बारे में लिसनर को सूचित किया जाएगा। एक्सटेंशन स्कैनर लिसनर पंजीकृत करके स्कैनर मुद्दों का कस्टम विश्लेषण या लॉगिंग कर सकते हैं।
Burp के सूट-व्यापी लक्ष्य स्कोप में जब भी कोई परिवर्तन होता है, तो लिसनर को सूचित किया जाएगा।
संभवतः बेकार है क्योंकि Burp आपको ग्लोबल स्कोप परिभाषा तक पहुँचने की अनुमति नहीं देता है।
यह खंड टेम्पलेट के विकास में कुछ निर्णयों की व्याख्या करता है।
सबसे पहले, मैं Java का प्रशंसक नहीं हूँ
जैसा कि आप जानते होंगे, BurpSuite तीन मुख्य भाषाओं में एक्सटेंशन विकसित करने की अनुमति देता है: Java, Python और Ruby। वास्तव में यह पूरी तरह सच नहीं है। Burp आपको Jython और JRuby में विकसित करने की अनुमति देता है। यहाँ असली समस्या यह है कि जब आप Burp एक्सटेंशन में Jython या JRuby का उपयोग कर रहे हैं, तब भी आपको Java में सोचने की आवश्यकता है (क्योंकि यह Burp की मुख्य भाषा है), इसलिए अंत में, आप Python और Java में विकसित कर रहे होंगे, लेकिन अपने प्रोजेक्ट को एक वास्तविक IDE, ऑटोकम्प्लीशन और इस तरह की आधुनिक चीजों के साथ एकीकृत करने में बहुत सारी समस्याओं के साथ।
Jython के बजाय Java का उपयोग करने का एक और अच्छा कारण यह है कि यह Python 2.7 पर आधारित है, और मैं JRuby का उपयोग नहीं कर रहा हूँ क्योंकि मुझे Ruby पसंद नहीं है, बस इतना ही।
जैसा कि आप देख सकते हैं, Burp Interface के सभी कार्यान्वयन एक Singleton pattern का पालन कर रहे हैं, इसका मुख्य कारण पूरी तरह से व्यक्तिपरक है।
बात यह है कि Burp एक महान उपकरण है, लेकिन यह अपने आंतरिक भागों के बारे में थोड़ा अस्पष्ट है और शायद थोड़ा अव्यवस्थित है। इसलिए, उदाहरण के लिए, Burp आपको कई IHTTPListeners पंजीकृत करने की अनुमति देता है, लेकिन आप इस लिसनर्स के कॉलिंग ऑर्डर जैसे महत्वपूर्ण निर्णय खो देंगे। मेरी विनम्र राय में, इस तरह की स्थितियाँ Burp Extension की समझ और कोड रखरखाव को अस्पष्ट और कठिन बना सकती हैं।
आप प्रत्येक singleton वर्ग को Burp के साथ एक आवश्यक कनेक्शन बिंदु के रूप में देख सकते हैं, जो अद्वितीय होना चाहिए। उस कनेक्शन बिंदु से, आप अपने कोड को नियंत्रित कर सकते हैं, किसी भी प्रकार का ऑब्जेक्ट ओरिएंटेड डिज़ाइन कर सकते हैं।
MIT © Raul Sampedro