Python for Hacking 4 Часть - Расширение для Burp Suite на Python. IP Changer in HTTP-header

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 ;)

Report Page