内容简介: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插件。
三、介绍API
Burp Suite官方API文档: https://portswigger.net/burp/extender/api/index.html
从Burp Suite上我们可以直接查看api文档,也可下载到本地:
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
五、 实战开发
目前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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 详细讲解 | 利用python开发Burp Suite插件(二)
- WebSocket技术讲解
- Fetch 的实例讲解
- SnapHelper硬核讲解
- reactivecocoa基础讲解
- Webpack原理简单讲解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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 在线格式化
在线 XML 格式化压缩工具