No.1
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
No.2
前言
上节课抛出了一个问题,关于界面卡死问题。当我们想写一个检测注入漏洞的插件时,payload很多,那么burp会等待payload运行完才会反应,这样就陷入了卡死。
此节课介绍burpsuite的扫描模块,利用扫描模块的api执行我们的payload时,burpsuite仍然能够正常运行。
No.3
被动扫描doPassiveScan
被动扫描,burp默认是开启被动扫描的,即每次的数据包都会放到被动扫描模块进行扫描。那么我们可以重定义被动扫描方法,让每次数据包的被动扫描发送我们定义的payloads。
官方api地址:https://portswigger.net/burp/extender/api/burp/IScannerCheck.html
注:被动扫描要注意一点,那就是修改数据包的时候,如果你在后台也开启插件,那么可能会造成后台数据修改!所以被动扫描插件最好只扫描前台,到了后台一定要关闭掉。
导入模块
from burp import IBurpExtender, IScannerCheck
注册扫描
callbacks.registerScannerCheck(self)
定义被动扫描方法
def doPassiveScan(self, baseRequestResponse):
print call doPassiveScan
整体代码:
# -*-coding:utf-8 -*-
# 被动扫描
from burp import IBurpExtender, IScannerCheck
import sys
class BurpExtender(IBurpExtender, IScannerCheck):
def registerExtenderCallbacks(self, callbacks):
# Required for easier debugging:
sys.stdout = callbacks.getStdout()
# 用于设置当前扩展的显示名称,该名称将显示在Extender工具的用户界面中。参数:name – 扩展名。。
self._callbacks = callbacks
# 用于获取IExtensionHelpers对象,扩展可以使用该对象执行许多有用的任务。返回:包含许多帮助器方法的对象,用于构建和分析HTTP请求等任务。
self._helpers = callbacks.getHelpers()
# 用于设置当前扩展的显示名称,该名称将显示在Extender工具的用户界面中。参数:name – 扩展名。
self._callbacks.setExtensionName(“demo_doPassiveScan”)
# 注册扫描
callbacks.registerScannerCheck(self)
def doPassiveScan(self, baseRequestResponse):
print call doPassiveScan
实践:
抓到数据包后并放掉的时候触发
扫描模块
成功触发
No.4
主动扫描doActiveScan
主动扫描,burp默认是关闭主动扫描的。
官方api地址:https://portswigger.net/burp/extender/api/burp/IScannerCheck.html
这里有两个注意点:
调用主动扫描的插件时,将burp默认的payload关闭
开启主动扫描的时候,也会默认被动扫描。所以如果同时加载主动扫描插件和被动扫描插件时,一定要注意这点,避免功能重复
打开burpsuite后,先关闭burp的默认扫描payload
除了方法和被动扫描不一样,其余代码一样。
def doActiveScan(self, baseRequestResponse, insertionPoint):
print call doActiveScan
整体代码如下:
# -*-coding:utf-8 -*-
# 主动扫描
from burp import IBurpExtender, IScannerCheck
import sys
class BurpExtender(IBurpExtender, IScannerCheck):
def registerExtenderCallbacks(self, callbacks):
# Required for easier debugging:
sys.stdout = callbacks.getStdout()
# 用于设置当前扩展的显示名称,该名称将显示在Extender工具的用户界面中。参数:name – 扩展名。。
self._callbacks = callbacks
# 用于获取IExtensionHelpers对象,扩展可以使用该对象执行许多有用的任务。返回:包含许多帮助器方法的对象,用于构建和分析HTTP请求等任务。
self._helpers = callbacks.getHelpers()
# 用于设置当前扩展的显示名称,该名称将显示在Extender工具的用户界面中。参数:name – 扩展名。
self._callbacks.setExtensionName(“demo doActiveScan”)
# 注册扫描
callbacks.registerScannerCheck(self)
def doPassiveScan(self, baseRequestResponse):
print call doPassiveScan
def doActiveScan(self, baseRequestResponse, insertionPoint):
print call doActiveScan
实践:
加入到扫描队列里
成功触发方法
通过这几节课我们已经掌握了burpsuite的常用几个模块调用,下节课学习对抓到的数据包进行分析,分离出每个请求包的参数,每个响应包的参数等信息。
本文作者是属于水滴实验室。以复杂对抗为主,通过研究流量特征分析对抗技术、防御技术与终端安全防御技术来发现防护体系不足,增强产品能力提升。实验室成员均来多年攻防经验的研究员,拥有非常完善的攻防经验,为产品检测、安全防御能力检测提供了强有力的保障,同时主要担任红蓝对抗业务,以红队视角评估企业安全防护体系
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Burp Extender Apis 插件开发 (二) https://www.yhzz.com.cn/a/433.html