
CVE-2021-3156 - "Baron Samedit" のためのシンプルなDockerラボとエクスプロイトセットアップ
このリポジトリは、CVE-2021-3156 を理解し悪用するための自己完結型の教育環境を提供します。この脆弱性は sudo におけるヒープベースのバッファオーバーフローであり、脆弱なシステム(1.9.5p2 より前の sudo バージョン)上で、権限のない任意のユーザーが root 権限を取得できるようになります。
この資料は許可されたセキュリティトレーニングおよび研究専用です。
自分が所有していないシステムに対する不正・非倫理的な使用は違法です。
Dockerfile - sudo 1.8.31(脆弱なバージョン)を含む Ubuntu 20.04 コンテナを構築しますexploit.c - メインのエクスプロイトペイロード(Ubuntu 20.04 向けに調整済み)shellcode.c - root シェルを起動する共有ライブラリコンストラクタMakefile - エクスプロイトと悪意のあるライブラリをコンパイルしますgit clone https://github.com/Theleopard65/CVE-2021-3156-Baron-Samedit.git
cd CVE-2021-3156-Baron-Samedit
docker build -t cve-2021-3156-lab .
poc としてログインします。/home/exploit で、ソースファイルがすでに含まれています。docker run -it --rm --name baron_samedit_lab cve-2021-3156-lab
cd /home/exploit
./exploit
成功すると、root シェルのプロンプト(#)が表示されます。このエクスプロイトは sudo のヒープ内の service_user 構造体を上書きし、悪意のあるライブラリ libnss_x/x.so.2 を強制的にロードさせます。そのライブラリのコンストラクタがシェルコードを実行します。
make clean && make
これにより以下が作成されます:
exploit - メインのエクスプロイトバイナリlibnss_x/x.so.2 - 悪意のある共有ライブラリCVE-2021-3156 は、sudoedit のコマンドライン引数処理におけるヒープベースのオーバーフローです。巧妙に細工されたバッファと環境変数を供給することで、攻撃者はヒープ上の service_user 構造体を上書きできます。この構造体には関数ポインタが含まれており、ハイジャックされると、NSS(Name Service Switch)メカニズムを介してロードされる悪意のあるライブラリを指すようにできます。その後、ライブラリのコンストラクタが root 権限で任意のコードを実行します。
このエクスプロイトは:
buf)を割り当てます。LC_MESSAGES、LC_TELEPHONE、LC_MEASUREMENT 環境変数を使用してヒープレイアウトを整形します。files の service_user 構造体にオーバーフローし、その名前を悪意のあるライブラリ(libnss_x/x.so.2)へのパスに置き換えます。shellcode.c 内)が setuid(0)、setgid(0) を実行し、root シェルを起動します。Docker イメージを削除する場合:
docker rmi cve-2021-3156-lab
このプロジェクトは教育目的のみで提供されています。使用は自己責任で行ってください。