用户
搜索
  • TA的每日心情
    奋斗
    10 小时前
  • 签到天数: 214 天

    连续签到: 9 天

    [LV.7]常住居民III

    i春秋-核心白帽

    Rank: 4

    45

    主题

    156

    帖子

    3789

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2015-11-20
    发表于 2018-4-23 11:31:50 78740

    #使用Python开发BurpSuite插件

    本文首发于DYSRC,投稿到i春秋,T00ls

    0x00简介

    对于BurpSuite这个利器,相信大家肯定比较熟悉,也利用过其中的一些功能强大插件。而BurpSuite提供的扩展模块 Extender 可以通过各种方式扩展功能。今天就带大家了解如何利用BurpSuite提供的Api来用Python脚本编写插件,打造属于自己的BurpSuite。

    0x01基础知识

    对于Burpsuite插件,官方提供了Api文档介绍

    https://portswigger.net/burp/extender/api/index.html

    其中比较常用的Api接口是

    1。IBurpExtender必须继承的类,类似于注册为插件
    2。IHttpListener会接收所有通过BurpSuite的请求和响应

    1. IHttpRequestResponse此接口用于检索和更新有关http消息的详细信息
      4。IProxyListener扩展可以实现这个接口,然后调用IBurpExtenderCallbacks.registerProxyListener()来注册一个代理监听器。监听器将收到代理工具正在处理的请求和响应的通知。通过注册代理侦听器,扩展可以执行自定义分析或修改这些消息,并控制消息拦截。

    0x02环境配置

    BurpSuite安装Python开发的扩展需要配置Jython环境。
    Jython下载.png

    在[Jython下载](http://www.jython.org/downloads.html)直接下载Standalone Jar版本就可以。在Extender中标签页中选择选项标签。在python环境中选中刚刚下载的Jython Standalone Jar。

    选择Jar.png Jar路径.png

    # #×03关系编写插件代码

    首先需要导入打嗝的相关库

    ```蟒蛇
    #!的/ usr /斌/包膜蟒蛇
    #编码= UTF8
    从打嗝进口IBurpExtender
    从打嗝进口IHttpListener
    从打嗝进口IHttpRequestResponse
    从打嗝进口IResponseInfo

    
    然后使用BurpExtender类,并填写模块注册信息
    
    ```python 
    类BurpExtender(IBurpExtender,IHttpListener):
        #define registerExtenderCallbacks:From IBurpExtender接口
        def registerExtenderCallbacks(self,callbacks):
    
            #保持参照我们的回调对象(打嗝扩展功能)
            self._callbacks =回调
            #得到的扩展助手对象(打嗝扩展功能)
            #http://portswigger.net/burp/extender/api/burp/IExtensionHelpers.html 
            自._helpers = callbacks.getHelpers()
            #设置我们的扩展名,它将显示在Extender标签页中
            self._callbacks.setExtensionName(“Burp Test unicode decode”)#设置模块名称
            #注册自己作为HTTP监听器
            callbacks.registerHttpListener(self)
    `` `` 
    
    然后定义函数,对请求头或者返回信息进行处理,下面以解码响应中的unicode为例
    
    ```python 
            #define processHttpMessage:From IHttpListener Interface
        def processHttpMessage(self,toolFlag,messageIsRequest,messageInfo):
    
            #确定我们想要通过我们的扩展的工具:
            if toolFlag == 64 or toolFlag == 16 or toolFlag == 32:#if工具是代理选项卡或中继器   
                    #不同的工具标记代表了不同的burp组件。参考链接https://portswigger.net/burp/extender/api/constant-values.html#burp.IBurpExtenderCallbacks#
                确定请求或响应:
                if not messageIsRequest:#仅处理响应//响应包进行处理
                    response = messageInfo.getResponse()#处理返回,响应包
                     #get来自IHttpRequestResponse实例的响应analyzeResponse 
                    = self._helpers.analyzeResponse(response)#returns IResponseInfo#处理响应
                    headers = analysedResponse.getHeaders()
                    #替换iso8859-1 
                    #通过标题列表
                    new_headers = [] 
                    对标题中的标题进行迭代:
                        #查找内容类型标题)
                        如果header.startswith(“Content-Type:”):
                            #Look对HTML响应
                            #header.replace( 'ISO-8859-1', 'UTF-8')
                            #打印头
                            new_headers.append(header.replace( 'ISO-8859-1', 'UTF-8'))
                        否则:
                            new_headers.append(header)
    
                    打印new_headers
    
                    body = [body:
                    body ]; } body body = response [ analyseResponse.getBodyOffset ():] body_string = body.tostring()
                    #print body_string 
                    u_char_escape = re.search(r'(?:\\ u [\ d \ w] {4})+',body_string)
                    如果u_char_escape:
                        #打印u_char_escape.group()
                        u_char = u_char_escape.group()。decode('unicode_escape')。encode('utf8')
                        new_body_string = body_string.replace(u_char_escape.group(),' -  u--' + u_char +' -  u--')
                        new_body = self._helpers.bytesToString(new_body_string)
                        #print new_body_string 
                        messageInfo.setResponse(self._helpers。buildHttpMessage(new_headers,new_body))
    

    0x04访问上传插件到BurpSuite

    将代码保存成PY文件,基本代码如下内容

    完整代码.png

    然后在BurpSuite中导入的Python代码,

    添加py.png

    点击 接下来会发现下面的提示。

    安装py成功.png

    0×05在BurpSuite使用中插件

    当安装成功后,会自动启动该插件。

    使用插件前,如下查询查询结果
    使用插件前.png

    使用后查询查询结果如下

    结果.png

    可以看到一个简单的解码的unicode的BurpSuite插件已经打造成功。

    当然,本文只是使用一个简单的例子来说明如何去开发BurpSuite插件,针对不同的需求,还需要大家自行开发,或者使用插件库中的插件。

    插件库.png

    同时推荐一个Github上面的BurpSuite插件库https://github.com/xl7dev/BurpSuite

    文章及代码参考:






    本帖被以下淘专辑推荐:

    微信截图_20180424111520.png
    谷歌翻译翻车了?

    评分

    参与人数 1魔法币 +5 收起 理由
    dazhige + 5 欢迎分析讨论交流,i春秋论坛有你更精彩!.

    查看全部评分

    使用道具 举报 回复
    z7788520 i春秋作家 ← 假 真➡i春秋打杂员 核心白帽 i春秋签约作者 积极活跃奖
    板凳
    发表于 2018-4-24 20:43:41
    谷歌翻译翻车了?
    不惹事,不生事,妖魔鬼怪快走开
    使用道具 举报 回复
    厉害来
    使用道具 举报 回复
    发表于 2018-4-25 10:30:17
    被翻译了,我也是……
    使用道具 举报 回复
    发表于 2018-4-25 15:42:18
    6666。。。好多大蟒蛇
    使用道具 举报 回复
    发表于 2018-4-27 09:17:26
    代码有些错误。。。
    使用道具 举报 回复
    就这复制粘贴的能力也是不错的了
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册