我是靠谱客的博主 精明啤酒,最近开发中收集的这篇文章主要介绍Python编写Burpsuite插件(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

0x00 续上篇 再来继续看官方给出的demo(新看客请从一开始)

0x01 本篇章主要是在各种运行时注册监听器 并打印响应的内容

0x02 通读以下代码 了解其代码运行过程 并调试代码 安装查看结果

#coding=utf-8
from burp import IBurpExtender	#核心扩展
from burp import IHttpListener	#事件监听
from burp import IProxyListener	#代理监听
from burp import IScannerListener	#扫描监听
from burp import IExtensionStateListener	#扩展状态监听
from java.io import PrintWriter	#java方法-输出

class BurpExtender(IBurpExtender, IHttpListener, IProxyListener, IScannerListener, IExtensionStateListener):
    
    #
    # implement IBurpExtender
    #
    
    def	registerExtenderCallbacks(self, callbacks):
        # 加载回调类为成员对象
        self._callbacks = callbacks
        
        # set our extension name   
        #设置扩展名称		setExtensionName()此方法用于设置扩展名称也就是插件名称
        callbacks.setExtensionName("Event listeners")
        
        # obtain our output stream  
        # 输出消息流到插件面板 getStdout()此方法用于获取当前扩展的输出流
        self._stdout = PrintWriter(callbacks.getStdout(), True)

        # register ourselves as an HTTP listener
        # 注册http消息监听器	registerHttpListener()此方法是用来注册一个监听器 该监听器可以探知到所有经过burp的请求/响应
        callbacks.registerHttpListener(self)
        
        # register ourselves as a Proxy listener
        # 注册代理监听器  registerProxyListener() 此方法是用来注册一个监听器 该监听器可以探知到通过代理模块的请求/响应
        callbacks.registerProxyListener(self)
        
        # register ourselves as a Scanner listener
        # 注册扫描监听器  registerScannerListener()  此方法是用来注册一个监听器 该监听器可以探知到扫描工具报告的问题
        callbacks.registerScannerListener(self)
        
        # register ourselves as an extension state listener
        # 注册扩展状态监听器 registerExtensionStateListener()此方法用来注册监听器 该监听器可以探知有关扩展插件的状态更改的通知
        callbacks.registerExtensionStateListener(self)
    
    #
    # implement IHttpListener
    # 实现http监听 当要发出http请求/响应时 会调用此函数

    def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
        self._stdout.println(
                ("HTTP request to " if messageIsRequest else "HTTP response from ") +
                messageInfo.getHttpService().toString() +
                " [" + self._callbacks.getToolName(toolFlag) + "]")
        #
        # toolFlag int 发出请求的burp工具的标识 
        # messageIsRequest bool 标记请求/响应  请求为1 响应为0
        # messageInfo 要处理的请求/响应的详细信息。扩展可以调用setter方法来更新当前信息 从而改变burp的行为
        # messageInfo.getHttpService() 此方法用于检索http请求/响应 为IHttpService对象 其中信息包含http服务的详细信息
        # .toString() 转换为字符串
        #_callbacks.getToolName()	此方法获取burp工具的的名称
        #

    #
    # implement IProxyListener
    # 当代理正在处理http消息时调用此方法
    #

    def processProxyMessage(self, messageIsRequest, message):
        self._stdout.println(
                ("Proxy request to " if messageIsRequest else "Proxy response from ") +
                message.getMessageInfo().getHttpService().toString())

        #
        # getMessageInfo() 此方法检索被拦截请求/响应 的详细信息 返回值为IHttpService对象 其中包含被拦截消息的详细信息
        # self._stdout.println(message.getMessageInfo().getHttpService().toString())	
        # 输出被拦截消息的host 例如:http://127.0.0.1

    #
    # implement IScannerListener
    # 将问题添加到burp scanner的结果时 调用此方法

    def newScanIssue(self, issue):
        self._stdout.println("New scan issue: " + issue.getIssueName())

     	# issue扩展程序可以查询Iscanissue对象。以获取有关新问题的详细信息
     	# getIssueName() 此方法返回问题类型的名称
     	#

    #
    # implement IExtensionStateListener
    # 卸载扩展时调用此方法

    def extensionUnloaded(self):
        self._stdout.println("Extension was unloaded")

0x03 以下是插件安装调试结果

          1.注册的监听器

                  

          2.通过代理工具请求百度查看结果  看到这里有两个请求输出一个是http 一个是代理是因为我们注册了两个监听器 一个是所有http的都监听 另外一个是通过代理工具的监听

             如果这里使用重放工具进行请求的话 就只显示一个啦

                 

         3.扫描报告监听

                  

                 

           4.扩展状态监听  卸载后

              

 

 

最后

以上就是精明啤酒为你收集整理的Python编写Burpsuite插件(二)的全部内容,希望文章能够帮你解决Python编写Burpsuite插件(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部