⭐ GitHubでスターを付けてください — サポートの表明として!
💡 ダークモードでご覧になることをお勧めします :)
プロジェクトSUDO_KILLERは、SANS Difference Award 2023のオープンソースツール部門で最終選考に残りました。
SUDO_KILLERは、サイバーセキュリティの実践者(ペネトレーションテスター、セキュリティ監査人、システム管理者、CTFプレイヤー、情報セキュリティ学生)向けのツールで、Linux環境における権限昇格を容易にします。これはSUDOの使用に関連する脆弱性、特にsudoルールの誤設定、バージョンに基づく弱点(CVEおよびその他の脆弱性)、危険なバイナリの展開(GTFOBINS)に焦点を当てています。これらの弱点は、ROOTレベルの権限を取得したり、他のユーザーになりすますために悪用される可能性があります。
SUDO_KILLERは、手動での権限昇格のための潜在的なコマンドとローカルエクスプロイトのカタログを提供します。重要なのは、自動化された悪用は行わず、ユーザー自身が意図された使用方法に従って悪用プロセスを実行する必要があることです。
以下は、SUDO_KILLERによって実行されるチェックのリストです。
[!WARNING] 上記のチェックリストは網羅的ではありません。
SUDO_KILLERを始めるには、git cloneするかzipをダウンロードしてください。練習やテストをしたい場合は、脆弱性のあるテスト環境(Dockerを使用)があります。関連動画では、Dockerのセットアップ方法とSUDO_KILLERの実行方法の概要を説明しています。Docker環境ではいくつかのシナリオを設定でき、さまざまな誤設定や欠陥のテストに使用できます。または、監査対象のシステム上で直接実行して、sudoに関連する誤設定や欠陥を確認することもできます。```shell ./SUDO_KILLERv.sh -c -a -e -r report.txt -p /tmp
Optional arguments:
</br>-c : CVEチェックを含む
</br>-a : サードパーティのアプリ/デバイスに関連するCVEを含む
</br>-i : extract.shからのインポート(オフラインモード)
</br>-e : sudoルール/sudoersファイルのエクスポートを含む
</br>-r : レポート名(出力を保存)
</br>-p : エクスポートとレポートを保存するパス
</br>-s : sudoチェックのためのユーザーパスワードを提供(現在のユーザーのパスワードなしではsudoルールにアクセスできない場合)
</br>-h : ヘルプ
> [!NOTE]
> -c引数を使用する場合、2種類のチェックが提供されることに注意してください。1つは、特定されたCVEが現在使用されているsudoのバージョンにのみ基づくもので、もう1つは要件もチェックされるものです。
> 多くの場合、sudoのバージョンが脆弱であっても、悪用を成功させるにはいくつかの前提条件が必要な場合があります。
> [!NOTE]
> パスワードの提供:sudo -lを実行するためにパスワードが必要な場合、-s引数でパスワードを提供しないとスクリプトは機能しません。
<a name="docker"></a>
### Docker(脆弱なテスト環境)
<p align="left">
<img width="25%" src="https://raw.githubusercontent.com/TH3xACE/res/main/SK/docker.gif" alt="-dockerlogo"/>
</p>
Dockerコンテナのセットが用意されており、`SUDO_KILLER`や脆弱性をテストおよび実践的に実験するための意図的に脆弱な環境を提供します。```shell
service docker start
docker pull th3xace/sudo_killer_demo3
docker run --rm -it th3xace/sudo_killer_demo3
(This docker is only to test the CVE-2019-18634 (pwfeedback))
service docker start
docker pull th3xace/sudo_killer_demo2
docker run --user 1000 --rm -it th3xace/sudo_killer_demo2
Curlie は Go 用の高性能な並行 HTTP/3 および HTTP/2 クライアントライブラリです。自動プロトコルネゴシエーション、マルチプロセッシング、ドメイン固有の設定システムをサポートし、ホスト固有の設定を持つリバースプロキシ向けに設計されています。
$ service docker start $ ./run.sh
pwn@f722d9182d1f:~$ ./sudo-chwoot.sh id woot! uid=0(root) gid=0(root) groups=0(root),1001(pwn)
pwn@f722d9182d1f:~$ ./sudo-chwoot.sh woot!
root@f722d9182d1f:/# id uid=0(root) gid=0(root) groups=0(root),1001(pwn)
## なぜパスワードなしで「sudo -l」を実行できるのか?
デフォルトでは、ホスト上のユーザーのエントリのいずれかにNOPASSWDタグが適用されている場合、パスワードなしで「sudo -l」を実行できます。この動作は、verifypwおよびlistpwオプションによって上書きされる可能性があります。
ただし、これらのルールは現在のユーザーにのみ影響するため、ユーザー偽装(suを使用)が可能な場合は、このユーザーからもsudo -lを起動する必要があります。
場合によっては、パスワードなしでsudo -lにアクセスできなくても、/etc/sudoersファイルを読み取ることができます。
<a name="scenarios"></a>
## シナリオ
シナリオを切り替えるには(異なるシナリオ間の競合を防ぐため)、docker(demo3)上で:```shell
switchScenario <scenario_number>
Available scenarios: 0 to 10
All Scenarios 0 : Conflict might occur!
Scenario 1: [2,3] CVE - Rules
Scenario 2: [4] Excessive permissions
Scenario 2: [5] Excessive permissions (Authentication required)
Scenario 3: [6] User Impersonation
Scenario 4: [7] Common Misconfiguration (Change owner)
Scenario 4: [8,11] Common Misconfiguration (Wildcard)
Scenario 5: [13] Missing scripts from sudo rules
Scenario 6: [17] Dangerous Environment Variables
Scenario 7: [18] Dangerous binaries (gtfobins)
Scenario 8: [19] Recursive Impersonation test
Scenario 9: [20] Environment Path Hijacking
Scenario 10: [21] App Specific sudo vuln/misconfig
Scenario 11: [5] Excessive permissions (Authentication required)
Scenario 12: [16] Backdooring sudo (Credentials Capture)
プレイリストはこちらで見つけられます:https://www.youtube.com/watch?v=Q8iO9mYrfv8&list=PLQPKPAuCA40FMpMKWZLxQydLe7rPL5bml
[!IMPORTANT] 提供されたDockerで適切にテストを行う方法についてのクイックビデオ。
[!WARNING] 以下のビデオリストは完全ではありません。すべてのビデオにアクセスするには、プレイリストリンクをご確認ください。