Python for Hacking 4 Часть - Расширение для Burp Suite на Python. IP Changer in HTTP-header
moderator E7
Привет всем ! Сегодня я покажу как работать с Burp Suite , а именно мы напишем постой и в тоже время полезный плагин . Приступим !
Начало...
Недавно попался сайт, который блокировал IP посетителя, если тот совершал подозрительные действия. Способ обойти такую защиту был найден практически сразу – нужно было лишь добавлять ко всем HTTP-пакетам заголовок X-Forwarded-For со случайным IP. Однако в Burp реализовать такую обработку исходящих пакетов для всех инструментов, в частности Proxy, Spider и Repeater, оказалось невозможным. И здесь на помощь пришел Jython Burp API, который позволил довольно быстро получить необходимый результат.
Для этого потребовалось установить Java Development Kit и Jython 2.7, затем в рабочей директории Burp скомпилировать исходники Jython Burp API следующей командой:
Для следующих действий нам необходим Jython, поэтому у кого его нет , скачать его можно тут ;)
javac -cp burpsuite_v1.4.01.jar;jython.jar java/src/*.java java/src/burp/*.java
Есть и второй способ , это поставить среду через GUI самого Burp Suite следующим способом:

Процесс написания плагина
Для обработки запросов расширение должно реализовывать интерфейсы соответствующих инструментов Burp (например, IProxyRequestHandler, ISpiderRequestHandler, etc) и иметь метод processRequest. В итоге, получилось следующее расширение:

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:
__all__ = ('RandomIP')
Все расширения регистрируются в burp.ini, в моем случае было необходимо добавить следующие строки:
[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.
С любовью от E7 ;)