
個人的なトレーニングを目的としたCVE-2021-4034 (PwnKit) のPoC。
このリポジトリには、CVE-2021-4034 (別名 PwnKit) の Proof of Concept が含まれています。個人のトレーニングおよび教育目的のみで開発されました。自分が所有している、または明示的にテストを許可された環境でのみ使用してください。
エクスプロイトをビルドするには以下が必要です:
pkexec は Polkit のユーティリティで、認可されたユーザーが別のユーザー (通常は管理者権限) としてプログラムを実行できるようにします。sudo と似ています。CVE-2021-4034 は、このバイナリに影響するメモリ破損の脆弱性です。この問題は、argc == 0 の場合の不適切な引数処理に起因します。これにより、境界外書き込みが発生し、攻撃者がメモリ内の最初の環境変数ポインタを制御できるようになります。特定の条件下では、特権のないローカルユーザーがルートまで権限を昇格できる可能性があります。詳細はこちら: https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
最終的なエクスプロイトは完全に自己完結しており、外部ライブラリや追加のバイナリを必要としません。
ディストリビューション: Ubuntu 20.04 LTS
カーネルバージョン: 5.4.0-42-generic
Polkit バージョン: 0.105-26ubuntu1 (未パッチ)
含まれているシェル (shell.asm) は Linux 向けの x86_64 アセンブリで記述されています。これは共有オブジェクト (.so) にコンパイルされ、エクスプロイトに埋め込まれています。オプションで、シェルは C で実装することでディストリビューション間の移植性を高めることもできますが、ASM バージョンは学習目的と低レベルアセンブリコーディングの練習のために残されています。
注意: このエクスプロイトとシェルは x86_64 Linux 環境でのみ互換性があります。別のアーキテクチャ (例: ARM や i386) では動作しません。
コンパイル:
make
実行:
./exploit
クリーンアップ:
make clean
この脆弱性は 2022 年 1 月にパッチされました。
未パッチの policykit-1 を実行している場合、システムが脆弱である可能性があります。一時的な緩和策として、pkexec から SUID ビットを削除できます:
chmod -s /bin/pkexec