详细讲解 | 利用python开发Burp Suite插件(一)

栏目: 编程工具 · 发布时间: 5年前

内容简介:Burp Suite支持Java,Python,Ruby编写他的插件,在这里我们选用Python作为我们插件的开发语言,Python分很多种,常见的比如Jython,Cython等等。今天我们用的是Jython,Jython为我们提供了Python的库,同时也提供了所有java的类。我们需要让Burp Suite加载我们的插件,在

一、选择Burp Suite插件开发语言

Burp Suite支持Java,Python,Ruby编写他的插件,在这里我们选用 Python 作为我们插件的开发语言,Python分很多种,常见的比如Jython,Cython等等。今天我们用的是Jython,Jython为我们提供了Python的库,同时也提供了所有 java 的类。

二、配置Jython环境

我们需要让Burp Suite加载我们的插件,在 http://www.jython.org/downloads.html下载2.7.0版本 (可下载Standalone独立jar包)。下载好后如下图使Burp Suite加载Python插件。

详细讲解 | 利用python开发Burp Suite插件(一)

三、介绍API

Burp Suite官方API文档: https://portswigger.net/burp/extender/api/index.html

从Burp Suite上我们可以直接查看api文档,也可下载到本地:

详细讲解 | 利用python开发Burp Suite插件(一)

1.(红色)插件入口和帮助接口类:

IBurpExtender # Burp插件的入口
IBurpExtenderCallbacks # IBurpExtender接口的实现类
IExtensionHelpers     # 帮助接口
IExtensionStateListener # 管理操作接口

2.(绿色)UI相关接口类:

IContextMenuFactory
IContextMenuInvocation
ITab
ITextEditor
IMessageEditor
IMenuItemHandler
# 以上主要是定义Burp插件的UI显示和动作的处理事件,主要是软件交互中使用

3.(蓝色) Burp工具组件接口类:

IInterceptedProxyMessage
IIntruderAttack
IIntruderPayloadGenerator
IIntruderPayloadGeneratorFactory
IIntruderPayloadProcessor
IProxyListener
IScanIssue
IScannerCheck
IScannerInsertionPoint
IScannerInsertionPointProvider
IScannerListener
IScanQueueItem
IScopeChangeListener
#  Burp Suite工具组件接口类

4.(棕色)HTTP消息处理接口类:

ICookie
IHttpListener
IHttpRequestResponse
IHttpRequestResponsePersisted
IHttpRequestResponseWithMarkers
IHttpService
IRequestInfo
IParameter
IResponseInfo
# 处理Cookie、Request、Response、Parameter等消息头接口类

四、 官方插件开发示例

官方给出了简单的插件示例,包括java,python,ruby版本

https://portswigger.net/burp/extender#SampleExtensions

详细讲解 | 利用python开发Burp Suite插件(一)

五、 实战开发

目前jython还不支持python3,所以我们开发时还是采用python2的语法。

from burp import IBurpExtender    
from burp import IIntruderPayloadGeneratorFactory    
from burp import IIntruderPayloadGenerator    
from java.util import List, ArrayList    
import random    
    
    
class BurpExtender(IBurpExtender, IIntruderPayloadGeneratorFactory):    
  def registerExtenderCallbacks(self, callbacks):    
    self._callbacks = callbacks    
    self._helpers = callbacks.getHelpers()    
    callbacks.setExtensionName("burp—plugin")    
    callbacks.registerIntruderPayloadGeneratorFactory(self)    
    return    
    
  def getGeneratorName(self):    
    return "burp—plugin"    
    
  def createNewInstance(self, attack):    
    return BHPFuzzer(self, attack)    
    
class BHPFuzzer(IIntruderPayloadGenerator):    
  def __init__(self, extender, attack):    
    self._extender = extender    
    self._helpers  = extender._helpers    
    self._attack   = attack    
    print "burp—plugin"    
    self.max_payloads = 1000    
    self.num_payloads = 0    
    
    return    
    
    
  def hasMorePayloads(self):    
    print "hasMorePayloads called."    
    if self.num_payloads == self.max_payloads:    
      print "No more payloads."    
      return False    
    else:    
      print "More payloads. Continuing."    
      return True    
    
    
  def getNextPayload(self,current_payload):    
    payload = "".join(chr(x) for x in current_payload)    
    payload = self.mutate_payload(payload)    
    self.num_payloads += 1    
    return payload    
    
  def reset(self):    
    self.num_payloads = 0    
    return    
    
  def mutate_payload(self,original_payload):    
    picker = random.randint(1,3)    
    offset  = random.randint(0,len(original_payload)-1)    
    payload = original_payload[:offset]    
    
    if picker == 1:    
      payload += "'"    
    
    if picker == 2:    
      payload += "<script>alert('xss');</script>";    
    
    if picker == 3:    
      chunk_length = random.randint(len(payload[offset:]),len(payload)-1)    
      repeater     = random.randint(1,10)    
    
      for i in range(repeater):    
        payload += original_payload[offset:offset+chunk_length]    
    
    payload += original_payload[offset:]    
    return payload

*本文作者:锋之刃安全团队,转载请注明来自FreeBuf.COM


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Android 源码设计模式解析与实战

Android 源码设计模式解析与实战

何红辉、关爱民 / 人民邮电出版社 / 2015-11 / 79.00元

本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、备忘录模式、迭代器模式、模板方法模式、访问者模式、中介......一起来看看 《Android 源码设计模式解析与实战》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具