BurpSuite武器库打造之环境搭建和API介绍(下)

2023-11-17

 

                                

0x00 前言

 

接上篇丹丹妹,我又给大家带来了下篇,还是以python为开发语言,如有错误的地方还望大家多指正,轻喷。然后呢这边亲亲建议大家代码这种东西还是要多敲,多踩坑。毕竟伟大的爱情家周树人老先生说过只有痛过才能在心底留下不可磨灭的记号。

(多图警告!!!)

 

0x01 正文接口介绍

 

● IHttpRequestResponseWithMarkers

 

此接口是IHttpRequestResponse接口的一个子接口,用于那些被标记的 IHttpRequestResponse 对象,插件可以使用 IBurpExtenderCallbacks.applyMarkers() 创建一个IHttpRequestResponseWithMarkers实例。标记可用于各种情况,如指定Intruder 工具的 payload 位置,Scanner 工具的插入点或将 Scanner 工具的Issue设置高亮。

/*
* 以下两个方法均返回一个整型数组,这个数组包含了已定义标识的起始和结束的偏移量。
* 如果未定义标志将返回null
*/
//获取带有标记的请求的详细信息
java.util.List<int[]> getRequestMarkers()

 

//获取带有标记的响应的详细信息
java.util.List<int[]> getResponseMarkers()

Demo:

from burp import *
from array import array

class BurpExtender(IBurpExtender, IHttpListener):

    def registerExtenderCallbacks(self, callbacks):
        self._callbacks = callbacks
        callbacks.registerHttpListener(self)

    def processHttpMessage(self, toolFlag, messageIsRequest, IHttpRequestResponse):
        #通过IBurpExtenderCallbacks.applyMarkers()创建一个IHttpRequestResponseWithMarkers实例
        #并设置requestMarkers [5,9] responseMarkers [0,3]
        markers = self._callbacks.applyMarkers(IHttpRequestResponse, [array('i', [5,9])], [array('i', [0,3])])
        print('RequestMarkers--->',markers.getRequestMarkers()[0])
        print('ResponseMarkers--->',markers.getResponseMarkers()[0])

 

 

以下Demo配合IScanner设置关键字高亮。

from burp import *
from array import array

class BurpExtender(IBurpExtender, IScannerCheck, IScannerInsertionPoint):
   
    def registerExtenderCallbacks(self, callbacks):
        self._helpers = callbacks.getHelpers()
        self._callbacks = callbacks
        callbacks.registerScannerCheck(self)

    def doPassiveScan(self, baseRequestResponse):
        array = list()
        match = self.getMatche(baseRequestResponse.getResponse(), 'Flag')
        
        array.append(ScanIssue(
                                [self._callbacks.applyMarkers(baseRequestResponse, None, match)],
                                baseRequestResponse.getHttpService(),
                                self._helpers.analyzeRequest(baseRequestResponse).getUrl()
                                )
                    )
        return array

    def doActiveScan(self, baseRequestResponse, insertionPoint):
        pass
   
    def getMatche(self, baseReqRes, rule):
        length = len(baseReqRes)
        matche = [array('i')]

        start = self._helpers.indexOf(baseReqRes, rule, True, 0, length)
        if (start > 0):
            matche[0].append(start)
            matche[0].append(start+len(rule))
            return matche

class ScanIssue(IScanIssue):
   
    def __init__(self, httpMessages, httpService, url):
        self._httpMessages = httpMessages
        self._httpService = httpService
        self._url = url

    def getConfidence(self):
        return 'Certain'

    def getHttpMessages(self):
        return self._httpMessages

    def getHttpService(self):
        return self._httpService

    def getIssueBackground(self):
        return None

    def getIssueDetail(self):
        return None

    def getIssueName(self):
        return 'test'

    def getIssueType(self):
        return 0

    def getRemediationBackground(self):
        return None

    def getRemediationDetail(self):
        return None

    def getSeverity(self):
        return 'Information'

    def getUrl(self):
        return self._url

    def getHost(self):
        return 'localhost'

    def getPort(self):
        return int(80)

 

Run Screenshot :添加了一个Issues并将Response中关键词设为高亮。

 

● IHttpService

此接口用于提供关于HTTP服务的详细信息,可以将HTTP请求发送到该服务。此接口提供了以下方法。

//返回HTTP服务信息的主机名或IP地址
java.lang.String getHost()

//返回HTTP服务器信息的端口
int getPort()

//返回HTTP服务信息的协议
java.lang.String getProtocol()

 

● Demo:

from burp import *

class BurpExtender(IBurpExtender, IHttpListener):

    def registerExtenderCallbacks(self, callbacks):
        callbacks.registerHttpListener(self)

    def processHttpMessage(self, toolFlage, messageIsResponse, messageInfo):
        #通过HttpService方法获取Http服务详细信息
        IHttpService = messageInfo.getHttpService()
        print("Host------>", IHttpService.getHost())
        print("Port------>", IHttpService.getPort())
        print("Protocol-->", IHttpService.getProtocol())

 

Run Output:

●IProxyListener

 

插件通过注册一个ProxyListener() 监听器,Proxy将在处理请求或者响应时通知该监听器,插件可以对这些信息执行自定义分析或修改。此接口提供了以下方法。

// Proxy模块处理HTTP消息时调用
void processProxyMessage(boolean messageIsRequest, IInterceptedProxyMessage message)

 

● IInterceptedProxyMessage

 

通过此接口,插件可以注册一个IProxyListenner来接收Proxy的详细信息 此接口包括以下方法。

//返回被截获的http消息所请求的客户端IP地址
java.net.InetAddress getClientIpAddress()

//返回拦截操作的类型,具体类型可在官方文档关于此接口的属性描述中查看
int getInterceptAction()

//返回当前截获该HTTP消息监听器的名称
java.lang.String getListenerInterface()

//返回被截获消息的详细信息
IHttpRequestResponse getMessageInfo()

//返回请求/响应消息的唯一引用号
int getMessageReference()

// 设置更新拦截操作
void setInterceptAction(int interceptAction)

 

Demo:

from burp import *

class BurpExtender(IBurpExtender, IProxyListener):

    def registerExtenderCallbacks(self, callbacks):
        callbacks.registerProxyListener(self)

    def processProxyMessage(self, messageIsRequest, message):
        #只对request操作
        if(messageIsRequest):
            print("IP ---> ", message.getClientIpAddress())
            print("Type ---> ", message.getInterceptAction())
            print("Listener ---> ", message.getListenerInterface())
            #将所有的http信息都做drop操作
            message.setInterceptAction(IInterceptedProxyMessage.ACTION_DROP)

 

Run Output:

● IIntruderPayloadGeneratorFactory

 

插件可以实现此接口,并且调用IBurpExtenderCallbacks.registerIntruderPayloadGeneratorFactory() 注册。IntruderPayloadGenerator工厂,然后通过重写该接口的createNewInstance方法来实现自定义Payload生成器, 该接口提供一下方法。

//返回一个IintruderPayloadGenerator Payload生成器对象
IIntruderPayloadGenerator createNewInstance(IIntruderAttack attack)

 

// 设置PayloadGenerator 名称
java.lang.String getGeneratorName()

IIntruderAttack
此接口用于操作Intruder Attack 模块, 并提供以下方法

//获取HTTP服务器信息
IHttpService getHttpService()

//获取
byte[] getRequestTemplate()

 

Run Output:

● IIntruderPayloadGenerator

此接口用于自定义Intruder 的Payload生成器,当发起一个Intruder工具时,插件通过注IIntruderPayloadGeneratorFactory 返回次接口实例。次接口提供入下方法。

//该方法用于获取下一个Payload的值
byte[] getNextPayload(byte[] baseValue)

 

// 此方法由Burp调用,由Paylaod生成器告知Burp是否继续提供Payload 继续为True࿰
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BurpSuite武器库打造之环境搭建和API介绍(下) 的相关文章

  • ubuntu pip intall出现“设备上没有空间”的解决办法

    原因 空间问题呗 东西太多了 tmp盘不够大 pip install的时候文件包会预先下载到tmp盘 步骤1 在home目录下新建一个tmp文件夹 用来取代系统根目录的tmp文件夹 步骤2 设置环境变量TMPDIR export TMPDI
  • 基于 UML 的业务建模举例

    基于 UML 的业务建模 2011 05 30 作者 杨敏强 来源 网络 简介 对于管理流程咨询项目 大型信息化建设项目和套装管理软件实施项目 对业务环境的分析和理解对项目的成功至关重要 系统 全面理解 IT 系统所处的业务环境 可以帮助
  • 验证码图片实现

    使用验证码进行验证 自动生成验证码 后台实现 package common makeCertPic import java awt Color import java awt Font import java awt Graphics im
  • word 封面 目录不要页码 从第三页正文开始要页码的 设置 方法

    原文网址为http hi baidu com liufeispy blog item c7318d01d69aaed7277fb524 html 封面 目录不要页码 从第三页正文开始要页码的 设置 方法 1 鼠标放在正文页 即你的第三页 首
  • Amdahl定律

    计算机科学中的一个重要定律 描述 系统中某部件由于采用某种方式使系统性能改进后 整个系统系能的提高与该方式的使用频率或占总的执行时间的比例有关 主要应用 改善 系统瓶颈 性能 Amdahl定律定义了加速比 加速比 采用改进措施后性能 未采用
  • 安卓数据视图化工具SQLiteStudio

    SQLiteStudio工具使用介绍 1 下载 SQLliteStudio 解压后打开文件夹中的exe文件即可 阿里网盘有 2 对SQLliteStudio进行配置 简介 视图化安卓开发过程中数据库内容 笔者使用AndroidStudio开
  • 2021-1-7-一文掌握git/github使用,内容详细,适合新手入门~

    文章目录 前言 一 git是什么 二 github 1 了解github 2 注册github账户 三 git安装 1 windows安装git 2 linux安装git 四 git github使用 1 git工作流简介 2 git基本命
  • chevereto 页面设置

    我贴一些图 大家可以根据我的设置来搞 或者你可以自定义喽 如果我设置不对 大家也指正一下 可设置的项目非常多 你可以按我的设置来初始化 如果你有什么不满意 自己微调即可 网站 这里值得一说的 搜索 探索 随机 喜欢 粉丝禁用后 这样访客就看
  • Xray和burpsuite联动被动扫描

    想挖点src又没啥思路 试着挂个自动漏扫工具xray 又看到能与burp联动实现自动扫就想尝试一下 搞好进自己网站测试了一下 的确是爬虫式漏扫 访问量属实大 不过自己设置设置还是一个很不错的工具 安装配置 是在ddosi org这里找的破解
  • Jenkins免密登录gitlab拉取代码

    折腾了一下午 终于弄好了 网上很多博客写的都不清楚 所以记录一下 环境说明 服务器 说明 192 168 199 1 Jenkins 192 168 199 2 gitlab 操作步骤 1 生成公匙 在jenkins服务器执行 ssh ke
  • 组合测试方法PK正交分析方法

    测试过程中 我们经常遇到需要覆盖多个变化参数的测试场景 如我们测试BS配置控制客户端组织资源远程配置一个设备时 进行一个设备通道视频参数设置的各种组合测试 如下图 多数情况下 类似于这种多组合测试时 老员工则是依靠经验去进行有针对性的测试
  • IDEA切换分支导致项目异常, 部分类爆红问题解决

    关于idea切换分支导致项目异常爆红的方式解决两种办法 1 maven 并没有及时刷新 所以 当我们第一时间出现这个问题的时候 首选是刷新maven 如图所示 2 如果刷新mavne 还是没有解决idea 项目爆红的情况的话 那我们就需要考
  • Linux Container(lxc)分析和配置使用

    前提 本文翻译 有道翻译 自linux container lxc 根据重点摘录学习 介绍 最好将容器化定义为 通过操作系统中的特性启用的进程隔离机制 容器是与系统其他部分隔离的一个或多个进程的集合 Containers VMs lxc通过
  • Xray使用教程

    简介 Xray是长亭科技开发的一款漏扫工具 支持多种扫描方式和漏洞类型 可自定义POC Proof of Concept 概念验证 即漏洞验证程序 俺是在 乌雲安全 看到了这个工具的使用 作为一个脚本小子初学者 这里做一下笔记 使用 web
  • CodeBlocks+wxWidgets

    之前也安装过CodeBlocks 只是当时没有安装wxWidgets 试着新建一个wxWidgets工程后没有看到界面设计的东东就放弃了 今天发现群里的南果梨也在用CodeBlocks 在他的帮助也终于成功的安装了wxWidgets 到ww
  • android无线调试连接

    开发时 遇到一些设备无法通过USB线连接adb时 可以尝试使用wifi无线调试 首先 要确保手机和电脑在同一个局域网内 再到开发者选项中打开无线调试 并进入子页面 如下 图一 无线调试设置界面 点击使用配对码配对设备 会弹出如下对话框 图二
  • 开源一个超好用的接口Mock工具——Msw-Tools

    作为一名前端开发 是不是总有这样的体验 基础功能逻辑和页面UI开发很快速 本来可以提前完成 但是接口数据联调很费劲 耗时又耗力 有时为了保证进度还不得不加加班 为了摆脱这种痛苦 经过一周的努力 从零开发了一个灵活无依赖 且集成简单的数据接口
  • 【神器】wakatime代码时间追踪工具

    文章目录 wakatime简介 支持的IDE 安装步骤 API文档 插件费用 写在最后 wakatime简介 wakatime就是一个IDE插件 一个代码时间追踪工具 可自动获取码编码时长和度量指标 以产
  • 基于vue-cli快速发布vue npm 包

    一 编写组件 1 初始化项目并运行 vue create vue digital count npm run serve 2 组件封装 新建package文件夹 因为我们可能会封装多个组件 所以在src下面新建一个 package 文件夹用
  • vcpkg安装zlmediakit(windows环境)

    文章目录 一 简介 二 vcpkg安装 1 vcpkg源码下载 2 vcpkg安装 三 安装zlmediakit 1 默认安装开启特性 core mp4 openssl webrtc 2 安装全部特性zlmediakit 包括webrtc

随机推荐

  • iOS支付功能

    文章转载自 https www jianshu com p 8eb14edca8fb 1 简介 iOS支付主要分两类 第三方支付和应用内支付 内购 其中第三方支付包括有 支付宝支付 微信支付 银联支付 百度钱包支付 京东支付等 应用内支付
  • 高性能javascript--算法和流程控制

    for while和do while性能相当 避免使用for in循环 除非遍历一个属性量未知的对象 es5 for in 遍历的对象便不局限于数组 还可以遍历对象 原因 for in每次迭代操作会同时搜索实例或者原型属性 for in 循
  • Linux系统:centos7.2忘记密码怎么办?

    在使用centos系统的时候有时候太久没用忘记登录密码了 这时候该怎么办呢 下面就来教教大家怎么重置root管理员的密码 1 启动系统 在GRUB2引导画面 按E键 编辑引导项 2 删除linux16这一行最后的 rhgb和 quiet参数
  • vue3中如何以函数的形式创建组件并挂载

    在日常开发中 我们可能会遇到一种情况 组件太灵活 且无法预先定义 那么我们就需要能够创建组件的能力 并且能组合到我们现有的界面中 基础API javascript 创建 app component name 组合
  • Uniapp零基础开发学习笔记(4) -顶部导航栏titleNView的制作

    Uniapp零基础开发学习笔记 4 顶部导航栏titleNView的制作 制作顶部导航栏titleNView的过程 1 官网上关于顶部导航栏的介绍 https uniapp dcloud net cn collocation pages h
  • sqlserver转换时间为字符串

    convert varchar 8 getdate 112 把
  • 文件预览:使用xlsx预览excel文件

    文件预览系列 mavon editor预览Markdown文件 xlsx预览excel文件 注意事项 多sheet页的情况需要自己手动处理 一 安装插件 xlsx 我目前使用的是0 17 5版本 之前有一次升级后报错 如果xlsx内部报错
  • C++deque容器deque 排序

    C deque容器deque 排序 功能描述 利用算法实现对deque容器进行排序 include
  • 关于BMC ipmi oem cmd和redfish

    ipmi是一个适用于bmc的标准协议 开发者可以通过ipmi oem cmd和bmc交互 oem cmd的实现与组成 均为unsigned char类型 NetFunction Cmd Request data Response data
  • Avue 远程搜索输入框,联动赋值其他组件 v2.7.10及以下

    Avue版本 v2 7 10及以下适用本文 v2 8 0及以上版本点这里 文章目录 Avue 远程搜索输入框 联动赋值 前言 一 基于avue自带属性实现 效果差 二 基于element ui实现 效果好 总结 Avue 远程搜索输入框 联
  • 用户登录非常慢报如下错误/usr/bin/xauth: timeout in locking authority file /home/user/.Xauthority

    一般是因为在创建用户时 用户家目录属组和属主不对导致 以最简单的解决办法就是给用户家目录赋予用户的所有权限就能解决 再次登录时 会重新创建一个这样的文件 下次登录就快了 chow user user user
  • 【JavaScript】Function的祖传方法call与apply

    引言 内容速递 看了本文您能了解到的知识 在本篇文章中 将带你了解什么是call和apply call和apply的用途 如何手写call和apply以及call和apply的使用场景 1 什么是call和apply call 和apply
  • ORB SLAM在Ubuntu14.04下环境配置

    在ubuntu14 04下安装Opencv2 4 9 安装 OpenCV 步骤一 创建目录 mkdir opencv cd opencv 步骤二 卸载任何以前安装的ffmpeg和x264软件 sudo apt get qq remove f
  • 面试经典(16)--二叉树根节点到指定节点的路径

    题目描述 给定一棵二叉树和二叉树中一个节点 输出根节点到指定节点间的路径 10 5 12 4 7 指定节点7 那么输出路径应该是10 5 7 分析与解法 这个题目是在我做过蛮多二叉树的题目之后总结的一道题目 发现很多题目都可以抽象出来这个题
  • VS code 显示中文异常解决办法

    从https www zhihu com question 34415763得到问题解决办法 现做如下总结 异常原因 VSCODE默认是UTF 8编码打开文件的 如果遇到了像GB18030 GBK等等的编码 就显示乱码了 解决办法如下 1
  • IDEA中Translation插件无法使用怎么办?

    昨天一个小偷 来我家偷钱 我们一起找了一晚上 问题 谷歌翻译退出中国了 导致我的 IDEA 翻译插件 Translation 也不能用了 会出现这样的错误 更新 TKK 失败 请检查网络连接 解决办法 使用百度翻译 很多翻译都收费 百度翻译
  • 用jquery实现选项卡效果(非常漂亮,带动画效果)

  • Map和String的相互转化

    Java中的Map集合与String的相互转化 代码如下 package com jianhu Test import java util Arrays import java util HashMap import java util M
  • electron-store 本地储存数据

    elelctron store elelctron store 是很好的本地储存库 https www npmjs com package electron store 使用 npm i elelctron store 设置 electro
  • BurpSuite武器库打造之环境搭建和API介绍(下)

    0x00 前言 接上篇丹丹妹 我又给大家带来了下篇 还是以python为开发语言 如有错误的地方还望大家多指正 轻喷 然后呢这边亲亲建议大家代码这种东西还是要多敲 多踩坑 毕竟伟大的爱情家周树人老先生说过只有痛过才能在心底留下不可磨灭的记号