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

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

内容简介: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


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

查看所有标签

猜你喜欢:

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

Fluent Python

Fluent Python

Luciano Ramalho / O'Reilly Media / 2015-8-20 / USD 39.99

Learn how to write idiomatic, effective Python code by leveraging its best features. Python's simplicity quickly lets you become productive with it, but this often means you aren’t using everything th......一起来看看 《Fluent Python》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具