📌

コンソール出力をしてみよう

に公開

初期設定

この記事を参考に、環境を整えてください。

この記事のゴール

Burp Suiteのアプリコンソール内に文字列を表示させることです。

公式サンプルコード

公式サンプルコードはとても優秀なので、この記事ではコードがほぼ同一になります。

JavaDoc

ログの種類

Extentionsから見たログの種類は大きく分けて2種類あります。今回はどちらにもログを出力させていきます。

  • Extentionタブのログ
    • 各Extentionをクリックしたときに表示されるExtention固有のログ出力。
    • Projectファイルに保存されない。
  • Dashboardタブのログ
    • 各Taskをクリックしたときに表示されるリクエストを診た結果のログ出力。
    • Projectファイルに保存される。

Extentionタブのログ出力

使用するMontoya APIは以下の2つです。

  • api.logging().logToOutput()
  • api.logging().logToError()

コードは以下のものを使用します。 gradle buildでjarファイルを生成したあとでBurp Suiteで読み込ませてください。

/*
 * This Java source file was generated by the Gradle 'init' task.
 */
package org.example;

import javax.management.RuntimeErrorException;

import burp.api.montoya.BurpExtension;
import burp.api.montoya.MontoyaApi;

public class App implements BurpExtension{

    @Override
    public void initialize(MontoyaApi api) {

        // アプリ名
        api.extension().setName("各ログインタフェースへ出力するだけのExtender");



        // Extentionタブの標準出力。(Outputタブ)
        api.logging().logToOutput("logToOutputのメッセージです。");

        // Extentionタブのエラー出力。(Errorタブ)
        api.logging().logToError("logToErrorのメッセージです。");

        // Extentionタブへ例外をスローしたときのエラー出力。(Errorタブ)
        Throwable error = new RuntimeErrorException(null, "例外のメッセージです。");
        api.logging().logToError(error);

        // 例外をスローするだけ。(Errorタブ)
        throw new RuntimeErrorException(null,"例外をスローしただけのメッセージです。");
    }
}

Burp Suite上で確認

初期設定で標準出力はこうなります。

エラー出力は以下の通りで、例外をスローするだけでもErrorログに出力されることがわかります。

DashBoardタブのログ出力

使用するMontoya APIは以下の4つです。

  • api.logging().raiseCriticalEvent()
  • api.logging().raiseDebugEvent()
  • api.logging().raiseErrorEvent()
  • api.logging().raiseInfoEvent()

コードは以下のものを使用します。

/*
 * This Java source file was generated by the Gradle 'init' task.
 */
package org.example;

import javax.management.RuntimeErrorException;

import burp.api.montoya.BurpExtension;
import burp.api.montoya.MontoyaApi;

public class App implements BurpExtension{

    @Override
    public void initialize(MontoyaApi api) {

        // アプリ名
        api.extension().setName("各ログインタフェースへ出力するだけのExtender");


        // イベントログにクリティカルメッセージを表示します。
        api.logging().raiseCriticalEvent("クリティカルな問題を告知したいときに使用するイベントログです。");

        // イベントログにデバッグメッセージを表示します。
        api.logging().raiseDebugEvent("デバッグメッセージを表示するイベントログです。");

        // イベントログにエラーメッセージを表示します。
        api.logging().raiseErrorEvent("エラーメッセージを表示するイベントログです。");

        // イベントログにInfoメッセージを表示します。
        api.logging().raiseInfoEvent("Infoレベルの問題を告知したいときに使用するイベントログです。");

    }
}

Burp Suite上で確認

確認は、Burp Suiteの下にあるEvent Logタブから確認できます。
Messageは、Extention名: メッセージ内容という形式で出力されます。
ここに表示するかと言われると、あんまりそういう機会は少ない気がします。

まとめ

ログ出力には大きく分けてExtentionタブへの出力とEvent Logタブへの出力の2種類あります。
出力するために必要なAPIは以下のとおりです。

  • Extentionタブ
    • api.logging().logToOutput()
    • api.logging().logToError()
  • Event Logタブ
    • api.logging().raiseCriticalEvent()
    • api.logging().raiseDebugEvent()
    • api.logging().raiseErrorEvent()
    • api.logging().raiseInfoEvent()

Discussion