
免責事項
このコードは教育および研究目的のみです。
所有していない、またはテストの許可を得ていないシステムには使用しないでください。
著者は、このコードの使用に起因する誤用、損害、法的結果について一切責任を負いません。
このエクスプロイトの解説は私のブログでご覧いただけます。これは、Max Kellermann氏の解説を基にRustで書いたDirtyPipe(CVE-2022-0847)エクスプロイトの実装です。 このプログラムを使用すると、特定のファイルを上書きしたり、SUIDバイナリを上書きして権限を昇格したりできます。
passwd)を上書きしてrootを取得する/tmpにバックアップするまず入力ファイルを作成します。このファイル内のデータがターゲットの上書きに使用されます。その後、以下のコマンドを実行するだけです:
./dirtypipe_exploit -m overwrite -i input.txt -o target_file -b offset
ここで、offset はファイル内で書き込みを開始するバイト単位のオフセットです。この脆弱性の性質上、オフセットはページ境界上に置くことはできず、書き込みもページ境界をまたぐことはできません。
SUIDモードは、指定したSUIDバイナリを所定のELFペイロードで置き換えます。suid ELFはこのリポジトリのリリースに同梱されており、オプションで特に指定しない限り、エクスプロイトによって使用されます。
また、自分で生成したり、gen_suid.py pwntoolsスクリプトとloader.asmファイルを使用してペイロードを変更したりすることもできます。このオプションについては後述します。
エクスプロイトはデフォルトでターゲットを/usr/bin/passwdに設定します。
以下のコマンドを実行すると、提供されたペイロードで/usr/bin/passwdを置き換えます(rootシェルを起動します):
./dirtypipe_exploit -m suid
その後、/usr/bin/passwdを実行するとrootシェルが得られます。
独自のペイロードを生成するには、次の手順に従ってください:
gen_suid.pyスクリプトを実行します。このスクリプトはpwntoolsを使用して、rootシェルを起動するペイロード(shellcode.bin)を生成します。必要に応じて変更してください。nasm -f bin -o [PAYLOAD_NAME] loader.asmを実行してELFバイナリペイロードを作成します。これによりshellcode.binファイルが実行可能ファイルになります。./dirtypipe_exploit -m suid -i [PAYLOAD_NAME] -o [TARGET_FILE]を実行します。STALKR's BLOGの作者に、64ビットTiny ELFヘッダー(こちら)を提供していただきありがとうございます。