首页 > 技术知识 > 正文

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

Burp Extender Apis 插件开发 (二)
打开凤凰新闻,查看更多高清图片

注:被动扫描要注意一点,那就是修改数据包的时候,如果你在后台也开启插件,那么可能会造成后台数据修改!所以被动扫描插件最好只扫描前台,到了后台一定要关闭掉。

导入模块

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

实践:

抓到数据包后并放掉的时候触发

Burp Extender Apis 插件开发 (二)1

扫描模块

Burp Extender Apis 插件开发 (二)2

成功触发

Burp Extender Apis 插件开发 (二)3

No.4

主动扫描doActiveScan

主动扫描,burp默认是关闭主动扫描的。

官方api地址:https://portswigger.net/burp/extender/api/burp/IScannerCheck.html

这里有两个注意点:

调用主动扫描的插件时,将burp默认的payload关闭

开启主动扫描的时候,也会默认被动扫描。所以如果同时加载主动扫描插件和被动扫描插件时,一定要注意这点,避免功能重复

打开burpsuite后,先关闭burp的默认扫描payload

Burp Extender Apis 插件开发 (二)4

除了方法和被动扫描不一样,其余代码一样。

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

实践:

Burp Extender Apis 插件开发 (二)5

加入到扫描队列里

Burp Extender Apis 插件开发 (二)6

成功触发方法

Burp Extender Apis 插件开发 (二)7

通过这几节课我们已经掌握了burpsuite的常用几个模块调用,下节课学习对抓到的数据包进行分析,分离出每个请求包的参数,每个响应包的参数等信息。

本文作者是属于水滴实验室。以复杂对抗为主,通过研究流量特征分析对抗技术、防御技术与终端安全防御技术来发现防护体系不足,增强产品能力提升。实验室成员均来多年攻防经验的研究员,拥有非常完善的攻防经验,为产品检测、安全防御能力检测提供了强有力的保障,同时主要担任红蓝对抗业务,以红队视角评估企业安全防护体系

猜你喜欢