Расширение отрыжка, как перехватить весь трафик
В настоящее время я разрабатываю расширение отрыжки с использованием 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 с открытым исходным кодом.