暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Burpsuite插件编写指南-Java篇(3)

白帽子飙车路 2021-10-20
1698

引言

经过了前面文章的学习,大家应该对Burpsuite插件的编写有了一个基本的认识了。

现在我们静下心,再来看看官网的例子,为后面的插件编写打一下夯实的基础。

学习官网的例子

官网的example,带大家挨个学习下

0x1 Hello world

这是一个非常简单的扩展,打印一些输出到Burp内的不同位置。

package burp;

import java.io.PrintWriter;

public class BurpExtender implements IBurpExtender {

// implement IBurpExtender
// 实现接口IBurpExtender

@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks)
{
这里是设置插件名称
callbacks.setExtensionName("Hello world extension");

     输出流和错误流,在burp输出内容
PrintWriter stdout = new PrintWriter(callbacks.getStdout(), true);
PrintWriter stderr = new PrintWriter(callbacks.getStderr(), true);

在Output中输出
stdout.println("Hello output");

     在Errors中输出
stderr.println("Hello errors");

     在Event log中插入消息
callbacks.issueAlert("Hello alerts");

     抛出一个异常
throw new RuntimeException("Hello exceptions");

}

}

0x2 Event listeners

此扩展为各种运行时事件注册侦听器,并在每个事件发生时打印消息。

package burp;

import java.io.PrintWriter;

public class BurpExtender implements IBurpExtender, IHttpListener, IProxyListener, IScannerListener, IExtensionStateListener { private IBurpExtenderCallbacks callbacks; private PrintWriter stdout;

// implement IBurpExtender
// 实现接口IBurpExtender

@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks)
{
保持对回调对象的引用
this.callbacks = callbacks;

设置插件名称
callbacks.setExtensionName("Event listeners");

输出流,在burp输出内容
stdout = new PrintWriter(callbacks.getStdout(), true);

注册HTTP侦听器
callbacks.registerHttpListener(this);

注册为代理侦听器
callbacks.registerProxyListener(this);

注册为扫描侦听器
callbacks.registerScannerListener(this);

r注册为扩展状态侦听器
callbacks.registerExtensionStateListener(this);
}

//
// implement IHttpListener
// 实现接口IHttpListener

@Override
public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo)
{
//这里是三元运算符,messageIsRequest是判断是否为true

//如果是request显示"HTTP request to "
//否则就是"HTTP response from ",getToolName是获取侦听器的工具标签名
stdout.println(
(messageIsRequest ? "HTTP request to " : "HTTP response from ") +messageInfo.getHttpService() +
" [" + callbacks.getToolName(toolFlag) + "]");

}

//
// implement IProxyListener
// 实现接口IProxyListener

@Override
public void processProxyMessage(boolean messageIsRequest, IInterceptedProxyMessage message)
{ 同上
stdout.println(
(messageIsRequest ? "Proxy request to " : "Proxy response from ") +
message.getMessageInfo().getHttpService());

}

//
// implement IScannerListener
// 实现接口IScannerListener

@Override
public void newScanIssue(IScanIssue issue)
{
这里是输出Burpsuite扫描到的问题
stdout.println("New scan issue: " + issue.getIssueName());

}

//
// implement IExtensionStateListener
// 实现接口IExtensionStateListener

@Override
public void extensionUnloaded()
{
卸载插件的时候会输出的文字
stdout.println("Extension was unloaded");

}

0x3 Traffic redirector

此扩展将所有出站请求从一个主机重定向到另一个主机。

package burp;

public class BurpExtender implements IBurpExtender, IHttpListener

{
// 定义了一个主机 private static final String HOST_FROM = "host1.example.org";

// 定义了另一个主机
private static final String HOST_TO = "www.tuya.com";

private IExtensionHelpers helpers;

// implement IBurpExtender
// 实现接口IBurpExtender

@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks)
{
// 获取扩展助手对象
helpers = callbacks.getHelpers();

// 设置扩展名为 “流量重定向”
callbacks.setExtensionName("Traffic redirector");

// 注册HTTP侦听器
callbacks.registerHttpListener(this);
}

//
// implement IHttpListener
// 实现接口IHttpListener

@Override
public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo)
{
// 判断是request的时候再进行括号中的操作
if (messageIsRequest)
{
// 从request中获取http的相关信息,分别是getHost(主机地址)

       // getPort(端口)、getProtocol(协议)
IHttpService httpService = messageInfo.getHttpService();

// HOST_FROM在前面已经定义过了,如果主机头与HOST_FROM相等

        //就使用buildHttpService修改为HOST_TO发起请求。
        //我手动导入了一下插件,下面对应的参数如下图所示。
if (HOST_FROM.equalsIgnoreCase(httpService.getHost()))
messageInfo.setHttpService(helpers.buildHttpService(
HOST_TO, httpService.getPort(), httpService.getProtocol()));

    }
}

}

剩下的插件我们下篇文章见






文章转载自白帽子飙车路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论