Расширение отрыжка, как перехватить весь трафик

В настоящее время я разрабатываю расширение отрыжки с использованием Python/ Jython.

Мой желаемый результат - иметь возможность взаимодействовать с каждой частью отрыжки (точнее, с нарушителем) и заменять заголовок при каждом отдельном запросе, который делает отрыв, независимо от того, какая часть отрыва выполняет запрос.

позвольте нам в качестве аргумента сказать, что заголовок запроса, который я хочу изменить, это "Accept-Language", и я хочу изменить его значение с de на en.

Как бы я сделал это с акцентом на "каждый отдельный запрос" или, если это слишком много, было бы хорошим началом взаимодействие только с запросами "нарушителя".

Примечание: я не хочу создавать полезную нагрузку злоумышленника, мне нужно менять заголовки на основе запроса.

1 ответ

Решение

Вы можете сделать это с помощью интерфейса IHttpListener. Когда слушатель зарегистрирован, метод processHttpMessage вызывается для каждого запроса и ответа. Внутри этого метода вы можете использовать analyseRequest для извлечения заголовков. Внесите необходимые изменения, затем используйте buildHttpMessage и setRequest.

Вот некоторый код, чтобы попробовать.

from burp import IBurpExtender, IHttpListener

class BurpExtender(IBurpExtender, IHttpListener):
    def registerExtenderCallbacks(self, callbacks):
        self.helpers = callbacks.getHelpers()
        callbacks.registerHttpListener(self)

    def processHttpMessage(self, toolFlag, messageIsRequest, message):
        if not messageIsRequest:
            return
        request = message.getRequest()
        requestInfo = self.helpers.analyzeRequest(request)
        headers = requestInfo.getHeaders()
        for i in range(len(headers)):
            if headers[i].startswith('Accept-Language: de'):
                headers[i] = 'Accept-Language: en'
        body = request[requestInfo.getBodyOffset():]
        updatedRequest = self.helpers.buildHttpMessage(headers, body)
        message.setRequest(updatedRequest)

Вас также могут заинтересовать наши примеры расширений. Кроме того, все расширения магазина BApp с открытым исходным кодом.

Другие вопросы по тегам