Прокачиваем Burp Suite Burp Suite является если не основным то, пожалуй, одним из главных инструментов пентестера. С момента выхода первого релиза Burp приобрел множество новых функций, появилась платная и бесплатная версии. Однако зачастую при проведении пентеста встроенного функционала не хватает, и в этом случае на помощь приходит Burp Extender – набор интерфейсов для расширения возможностей Burp. Сама программа написана на Java, и писать расширения предлагается также на этом языке. Тем не менее усилиями сторонних разработчиков в настоящее время появилось несколько проектов, цель которых – дать возможность создавать расширения и на других языках. Среди них: Buby – позволяет писать расширения на Ruby с использованием jRuby; Resty Burp – предоставляет REST/JSON-интерфейс для функционала Burp, что позволяет писать расширения на любом языке (к сожалению, работает только с платной версией Burp); Jython Burp API – открывает доступ к интерфейсам Burp Extender на Jython (реализация Python на Java). Недавно попался сайт, который блокировал IP посетителя, если тот совершал подозрительные действия. Способ обойти такую защиту был найден практически сразу – нужно было лишь добавлять ко всем HTTP-пакетам заголовок X-Forwarded-For со случайным IP. Однако в Burp реализовать такую обработку исходящих пакетов для всех инструментов, в частности Proxy, Spider и Repeater, оказалось невозможным. И здесь на помощь пришел Jython Burp API, который позволил довольно быстро получить необходимый результат. Для этого потребовалось установить Java Development Kit и Jython 2.7, затем в рабочей директории Burp скомпилировать исходники Jython Burp API следующей командой: Code: javac -cp burpsuite_v1.4.01.jar;jython.jar java/src/*.java java/src/burp/*.java Для обработки запросов расширение должно реализовывать интерфейсы соответствующих инструментов Burp (например, IProxyRequestHandler, ISpiderRequestHandler, etc) и иметь метод processRequest. В итоге, получилось следующее расширение: Code: import random from gds.burp.api import IIntruderRequestHandler, IScannerRequestHandler, IProxyRequestHandler, \ IRepeaterRequestHandler, ISequencerRequestHandler, ISpiderRequestHandler from gds.burp.core import Component, implements class RandomIP(Component): implements(IIntruderRequestHandler, IProxyRequestHandler, IRepeaterRequestHandler, IScannerRequestHandler, ISequencerRequestHandler, ISpiderRequestHandler) headerName = 'X-Forwarded-For' def processRequest(self, request): request.raw = request.raw.replace('\r\n\r\n', '\r\n' + self.headerName + ': ' + self.__generateRandomIP() + '\r\n\r\n', 1) return request def __generateRandomIP(self): s = [] for i in xrange(4): s.append(str(random.randint(1,254))) return '.'.join(s) Расширение было помещено в папку Lib/gds/burpext вместе с необходимым __init__.py: Code: __all__ = ('RandomIP') Все расширения регистрируются в burp.ini, в моем случае было необходимо добавить следующие строки: Code: [components] ... gds.burpext.randomip.RandomIP = enabled [handlers] intruder.request = RandomIP proxy.request = RandomIP repeater.request = RandomIP scanner.request = RandomIP sequencer.request = RandomIP spider.request = RandomIP И наконец, запуск: java -cp java/src/;jython.jar;burpsuite_v1.4.01.jar burp.StartBurp -i В итоге, пробел в функционале Burp был устранен. Надеюсь, данный мануал поможет всем, кто хочет начать писать расширения для Burp на Python. P.S. Для тех, кто пишет на Java, отмечу свежую статью на английском про организацию окружения для разработки под Burp на Java. 13 Июль 2012 Raz0r http://raz0r.name/articles/extending-burp-suite/ http://raz0r.name/
все бы хорошо, но было бы кульно не ручной все прокачать а просто с оффсайта дополнений инсталлить и все.