【问题标题】:burp extension how to intercept all trafficburp扩展如何拦截所有流量
【发布时间】:2018-01-30 14:33:56
【问题描述】:

我目前正在使用 python/jython 开发一个 burp 扩展。

我想要的结果是能够与 burp 的每个部分(更具体地说是入侵者)进行交互,并在 burp 发出的每个请求上替换一个标头,而不管 burp 的哪个部分发出请求。

为了争论,让我们说我希望修改的请求标头是“Accept-Language”,我希望将其值从 de 更改为 en。

我将如何做到这一点,重点是“每一个请求”,或者如果这太多了,那么只与“入侵者”请求交互将是一个很好的开始。

注意:我不想创建入侵者负载,我需要根据请求更改标头。

【问题讨论】:

  • 向我们展示您目前编写的代码。
  • @neuhaus 没有代码可以显示我要求一个基本模板。无论我得到什么代码或链接,我都会使用并围绕这些示例进行构建。我目前正在学习,这是我的下一步。
  • 你可能不需要扩展,见stackoverflow.com/questions/31684024/…
  • @neuhaus 我的插件,这是用于自定义哈希,需要根据请求的内容生成哈希。无论如何感谢您的链接

标签: python jython burp


【解决方案1】:

您可以使用IHttpListener 接口执行此操作。注册监听器后,每个请求和响应都会调用 processHttpMessage 方法。在此方法中,您可以使用 analyseRequest 来提取标题。进行所需的更改,然后使用 buildHttpMessagesetRequest

这里有一些代码可以尝试。

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)

您可能还对我们的sample extensions 感兴趣。此外,所有 BApp Store 扩展都是开源的。

【讨论】:

  • 非常感谢 :)
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 2022-06-13
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多