
كل ما تحتاج معرفته عن Burp Extension Generation

أولاً، قم بتثبيت Yeoman ومولد إضافة Burp باستخدام npm (نفترض أنك قمت بتثبيت node.js مسبقًا).
npm install -g yo
npm install -g generator-burp-extension
ثم قم بإنشاء مشروعك الجديد:
yo burp-extension
عند إنشاء مشروع الإضافة الخاص بك، سيسألك المولد عن الميزات التي يجب تضمينها في الإضافة. إذا كنت معتادًا على تطوير إضافات Burp، فستكون أسماء الميزات وصفية بما يكفي، ولكن إذا كنت جديدًا في إضافات Burp، فإليك وصفًا موجزًا لما يمكن فعله بكل ميزة.
علامة تبويب مخصصة ستُضاف إلى واجهة Burp. تُستخدم عادةً لإضافة بعض الوظائف (مثل إضافة logger++) أو فقط لتمكين المستخدم من تكوين الإضافة.

علامة تبويب محرر رسائل مخصصة ستُضاف إلى واجهة محرر رسائل Burp (مكرر، مخترق...). تُستخدم عادةً لتوفير نوع من وظائف المحرر/العرض المخصصة في حمولات الطلب/الاستجابة. أحد الأمثلة هو إضافة JSON Beautifier.

قائمة سياقية مخصصة ستُضاف إلى واجهة Burp في أي مكان تقريبًا، بالضغط على زر الفأرة الأيمن. يسمح Burp بإظهار القوائم السياقية في أي من هذه الحالات:
مثال بسيط على هذه الوظيفة هو إضافة copy-as-python-requests، التي تسمح بنسخ طلب ككود Python (مجرد مثال).

سيتم إخطار المستمع بالطلبات والاستجابات التي تتم معالجتها بواسطة أداة الوكيل (مستمع الوكيل) أو التي يتم إجراؤها بواسطة أي أداة Burp (مستمع HTTP). يمكن للإضافات إجراء تحليل مخصص أو تعديل لهذه الرسائل.
بعبارة أخرى، يعترض مستمعو الوكيل الطلبات القادمة من المتصفح إلى Burp والاستجابات القادمة من Burp إلى المتصفح. يعترض مستمع HTTP الطلبات الصادرة من Burp إلى خادم الويب والاستجابات الواردة من خادم الويب.

مثال على إضافة واقعية تستخدم هذه الميزة هو AutoRepeater.
قم بتوسيع حمولات Intruder بإضافة إمكانيات توليد مخصصة. أحد الاستخدامات المحتملة لهذه الوظيفة هو توليد أرقام IBAN عشوائية صالحة. مثال واقعي هو إضافة مولد حمولة ملف Intruder (لا أستخدمها، إنها مجرد مثال).

قم بتوسيع حمولات Intruder بإضافة إمكانيات معالجة مخصصة، أحد الأمثلة المحتملة هو إجراء تشفير AES باستخدام مفتاح ثابت.

عند إجراء المسح، سيطلب Burp من الفحص إجراء مسح نشط أو سلبي على الطلب الأساسي، والإبلاغ عن أي مشكلات في الماسح الضوئي يتم تحديدها.
عند مسح طلب بنشاط، سيقوم الماسح الضوئي باستدعاء هذا، ويجب على المزود تقديم قائمة بنقاط الإدراج المخصصة التي سيتم استخدامها في المسح.
سيكون كل إجراء مسجل متاحًا ضمن واجهة مستخدم قاعدة معالجة الجلسة ليختاره المستخدم كإجراء قاعدة. يمكن للمستخدمين اختيار استدعاء إجراء مباشرة بمفرده، أو بعد تنفيذ ماكرو.

سيتم إخطار المستمع عند إلغاء تحميل الإضافة من Burp. ملاحظة: يجب على أي إضافات تبدأ خيوطًا في الخلفية أو تفتح موارد النظام (مثل الملفات أو اتصالات قاعدة البيانات) تسجيل مستمع وإنهاء الخيوط / إغلاق الموارد عند إلغاء تحميل الإضافة.
سيتم إخطار المستمع بالمشكلات الجديدة التي يتم الإبلاغ عنها بواسطة أداة الماسح الضوئي. يمكن للإضافات إجراء تحليل مخصص أو تسجيل لمشكلات الماسح الضوئي عن طريق تسجيل مستمع للماسح الضوئي.
سيتم إخطار المستمع عند حدوث أي تغيير في نطاق الهدف على مستوى الحزمة في Burp.
ربما يكون عديم الفائدة لأن Burp لا يسمح بالوصول إلى تعريف النطاق العام.
يشرح هذا القسم بعض القرارات في تطوير القالب.
أولاً وقبل كل شيء، أنا لست من محبي Java
كما قد تعلم، يسمح BurpSuite بتطوير الإضافات بثلاث لغات رئيسية: Java وPython وRuby. في الواقع، هذا ليس صحيحًا تمامًا. يسمح Burp بالتطوير باستخدام Jython وJRuby. المشكلة الحقيقية هنا هي أنه عند استخدام Jython أو JRuby في إضافة Burp، لا يزال يتعين عليك التفكير بلغة Java (لأنها اللغة الرئيسية لـ Burp)، لذلك في النهاية، ستقوم بالتطوير بلغة Python وJava، ولكن مع الكثير من المشاكل في دمج مشروعك مع IDE حقيقي، مع الإكمال التلقائي وتلك الأشياء الحديثة.
سبب آخر وجيه لاستخدام Java بدلاً من Jython هو أنه يعتمد على Python 2.7، وأنا لا أستخدم JRuby لأنني لا أحب Ruby، هذا كل شيء.
كما قد تلاحظ، فإن جميع تطبيقات واجهة Burp تتبع نمط Singleton، والسبب الرئيسي لذلك هو شخصي بحت.
الأمر هو أن Burp أداة رائعة، لكنها غامضة بعض الشيء فيما يتعلق بداخلياتها، وربما تكون فوضوية بعض الشيء. على سبيل المثال، يسمح Burp بتسجيل عدة IHTTPListeners، لكنك ستفقد قرارات مهمة مثل ترتيب استدعاء هذه المستمعين. هذا النوع من المواقف، برأيي المتواضع، قد يغيّر ويصعّب فهم إضافة Burp وقابلية صيانة الكود.
يمكنك رؤية كل فئة Singleton كنقطة اتصال ضرورية مع Burp، يجب أن تكون فريدة. من نقطة الاتصال تلك، يمكنك التحكم في الكود الخاص بك، وتنفيذ أي نوع من التصميم الكائني.
MIT © Raul Sampedro