如何使用Burpscript向Burp Suite添加动态脚本功能

2024-06-03 355 0

关于Burpscript

Burpscript是一款针对Burp Suite的增强工具,该工具可以给Burp Suite添加动态脚本功能,允许广大研究人员以Python或JavaScript语言编写脚本并对HTTP请求和响应进行操作。

功能介绍

1、Python 3和JavaScript支持;

2、支持从Proxy或其他工具(类如Repeater)修改请求和响应;

3、根据条件丢弃请求或响应,或将他们发送至Intercept标签页进行手动审计;

4、支持文件修改后进行脚本热重载;

5、快速启用/禁用脚本;

6、内置加密组件;

7、支持过滤DSL,以便确定插件的注册处理程序是否应处理请求或响应;

工具安装

首先,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/ivision-research/burpscript.git

然后进入nix开发环境,直接使用项目提供的构建脚本构建工具代码即可:

$ nix develop

# 以Python支持构建

$ ./build.sh

# 以Python和JavaScript支持构建

$ ./build.sh --js --python

如果你不使用nix的话,则需要安装gradle,然后直接运行下列命令即可(可能会因gradle版本产生不同问题):

$ ./build.sh

生成的jar文件路径为“build/libs/burpscript-plugin-<version>.jar”,我们可以直接通过“Extensions -> Add”窗口将其安装到Burp Suite中。

Linux配置

将下列内容添加到/path/to/burp/BurpSuitePro.vmoptions文件中:

-Dpolyglotimpl.DisableClassPathIsolation=true

macOS配置

将下列内容添加到/Applications/Burp Suite Professional.app/Contents/vmoptions.txt文件中:

-Dpolyglotimpl.DisableClassPathIsolation=true

工具使用

Burpscript支持使用JavaScript和Python来开发脚本,添加脚本之后,当Burp Suite收到一个请求或响应时,Burpscript将会调用脚本中定义的制定命名处理函数,并在数据通过代理时允许脚本对其进行修改和审计。

Python使用

REQ_FILTER = """..."""

RES_FILTER = """..."""

 

def initialize():

    print("Initialized Python script")

 

 

def cleanup():

    print("Cleaning up Python script")

 

 

def on_request(req):

    print(f"{req.method()} - {req.url()}")

    return req.withBody("Modified")

 

 

def on_response(res):

print(f"{res.statusCode()} - {res.reasonPhrase()}")

JavaScript使用

.mjs文件后缀的脚本会以ES6模块处理,导出的处理函数如下:

export const RES_FILTER = "..."

export const REQ_FILTER = "..."

 

export function initialize() {

    console.log("Initialized the JavaScript module");

}

 

export function cleanup() {

    console.log("Cleaning up JavaScript");

}

 

export function onRequest(req) {

    console.log(`${req.method()} - ${req.url()}`)

    return req.withBody("Modified")

}

 

export function onResponse(res) {

    console.log(`${res.statusCode()} - ${res.reasonPhrase()}`);

    return res;

}

.js文件后缀的脚本会以CommonJS模块处理,需使用module.exports导出处理函数:

module.exports = {

    RES_FILTER: "...",

    REQ_FILTER: "...",

    initialize: function() {

        ...

    },

    cleanup: function() {

        ...

    },

    onRequest: function(req) {

        ...

    },

    onResponse: function(res) {

        ...

    }

}

导入模块

该工具还允许脚本导入相同目录中的其他模块。

Python版本:

# common.py

def do_something():

    ...
# script.py

from common import do_something

JavaScript版本(ES6):

// common.mjs

export function doSomething() {

    ...

}
// script.mjs

import { doSomething } from './common.mjs'

许可证协议

本项目的开发与发布遵循MPL-2.0开源许可协议。

项目地址

Burpscript:【GitHub传送门

参考资料

https://portswigger.net/burp/documentation/desktop/extensions/managing-extensions

https://www.graalvm.org/latest/reference-manual/js/Interoperability/


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

苹果试图保护你的隐私,OpenAI可能做不到
Shuffle:一款完全自动化的安全栈增强平台
如何使用CODASM编码Payload并降低熵值
SessionExec:一款针对会话安全的安全命令测试工具
Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞

发布评论