BurpSuite Extenderで、
どんな事が出来そうかを探っていきたいと思います。
動作的には
「GETメソッドの場合は赤く表示する」
「POSTメソッドの場合は青く表示する」
「リクエストの場合はメソッドを取得する」
「レスポンスの場合はステータスコードを取得する」
という感じのものを目指します。
package burp; import java.io.PrintWriter; public class BurpExtender implements IBurpExtender, IHttpListener, IProxyListener { private IBurpExtenderCallbacks callbacks; private IExtensionHelpers helpers; private PrintWriter stdout; private final String EXTENDER_NAME = "Test Extender"; // // implement IBurpExtender // @Override public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) { this.callbacks = callbacks; helpers = callbacks.getHelpers(); // set our extension name callbacks.setExtensionName(EXTENDER_NAME); // obtain our output stream stdout = new PrintWriter(callbacks.getStdout(), true); // register ourselves as an HTTP listener callbacks.registerHttpListener(this); // register ourselves as a Proxy listener callbacks.registerProxyListener(this); } // // implement IHttpListener // @Override public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) { if(messageIsRequest) { IRequestInfo requestInfo = helpers.analyzeRequest(messageInfo); stdout.println("Request Method : " + requestInfo.getMethod()); }else { byte[] response = messageInfo.getResponse(); IResponseInfo responseInfo= helpers.analyzeResponse(response); stdout.println("Response Status : " + responseInfo.getStatusCode()); } } // // implement IProxyListener // @Override public void processProxyMessage(boolean messageIsRequest, IInterceptedProxyMessage message) { if(messageIsRequest) { IRequestInfo requestInfo = helpers.analyzeRequest(message.getMessageInfo()); String method = requestInfo.getMethod(); if(method.equals("GET")) { message.getMessageInfo().setHighlight("blue"); }else if(method.equals("POST")) { message.getMessageInfo().setHighlight("red"); } // red, orange, yellow, green, cyan, blue, pink, magenta, gray }else { } } }
期待通りの結果です。
processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo);
This method is invoked when an HTTP request is about to be issued, and when an HTTP response has been received.
processProxyMessage(boolean messageIsRequest, IInterceptedProxyMessage message);
This method is invoked when an HTTP message is being processed by the Proxy.
BurpSuiteのエディタに反映させたい場合は、processProxyMessageメソッド内で処理をする必要があるのかな。
使える色は「red, orange, yellow, green, cyan, blue, pink, magenta, gray」の9色っぽいです。
とりあえず以上です。
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践 [ 徳丸 浩 ] 価格:3,520円 |
基礎からのWebアプリケーション開発入門 Webサーバを作りながら学ぶ (Software Design plusシリーズ) [ 前橋和弥 ] 価格:2,948円 |