CVE-2021-3156 (Sudo Baron Samedit)
このリポジトリは、Linux x64をターゲットとしたCVE-2021-3156のエクスプロイトです。詳細な解説は、https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31 をご覧ください。
クレジット: QualysのBraon Sameditによる最初のアドバイザリ。
ファイル
tcache対応glibc向けエクスプロイト
- exploit_nss.py すべての要件と /etc/nsswitch.conf のエントリ数を自動検出します
- exploit_nss_manual.py エクスプロイトの理解を深めるためのexploit_nss.pyの簡略版
- exploit_timestamp_race.c def_timestampを上書きし、競合状態を利用して /etc/passwd を変更します
tcache非対応glibc向けエクスプロイト
- exploit_defaults_mailer.py エクスプロイトはstruct defaultsを上書きしてmailerバイナリのパスを変更します。CentOS 6や7のようにdisable-root-mailerなしでコンパイルされたsudoが必要です。
- exploit_userspec.py エクスプロイトはstruct userspecを上書きして認証をバイパスし、 /etc/passwd に新しいユーザーを追加します。sudoバージョン1.8.9~1.8.23のみをサポートします。
- exploit_cent7_userspec.py 理解を目的としたexploit_userspec.pyの簡略版ですが、デフォルト設定のCentOS 7のみをターゲットとします
- exploit_nss_d9.py Debian 9でstruct service_userを上書きしますが、デフォルトの /etc/nsswith.conf のみをサポートします
- exploit_nss_u16.py Ubuntu 16.04でstruct service_userを上書きしますが、デフォルトの /etc/nsswith.conf のみをサポートします
- exploit_nss_u14.py Ubuntu 14.04でstruct service_userを上書きしますが、デフォルトの /etc/nsswith.conf のみをサポートします
その他
- asm/ Pythonエクスプロイトに埋め込むためのtinyelfライブラリと実行可能ファイル
- gdb/ sudoのヒープデバッグに使用されるスクリプト
エクスプロイトの選択
glibcがtcacheをサポートし有効化されているLinuxディストリビューション(CentOS 8、Ubuntu 17.10以降、Debian 10)の場合:
- まず exploit_nss.py を試してください
- エラーがglibc tcacheに関連していない場合は、次に exploit_timestamp_race.c を試すことができます
glibcがtcacheをサポートしていないLinuxディストリビューションの場合:
- ターゲットがDebian 9、Ubuntu 16.04、またはUbuntu 14.04の場合は、最初に特定バージョン向けの exploit_nss_xxx.py を試してください
- 次に、exploit_defaults_mailer.py を試してください。ターゲットのsudoが --disable-root-mailer 付きでコンパイルされていることがわかっている場合は、このエクスプロイトをスキップできます。このエクスプロイトはsudoバイナリからroot mailerフラグを確認しようとします。ただし、一部のLinuxディストリビューションではsudoのパーミッションが4711 (-rws--x--x) であり、ターゲットシステムで確認することは不可能です。(既知の動作OSはCentOS 6および7です)
- 最後に、exploit_userspec.py を試してください