⭐ 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] 以下のビデオリストは完全ではありません。すべてのビデオにアクセスするには、プレイリストリンクをご確認ください。
SUDO_KILLER バージョン3には、いくつかのタスクを達成するために使用できるツールのリストが含まれています。スクリプトは SUDO_KILLERv3/SUDO_KILLER/SK-Tools/ にあります。
SK-ImperBruteForce-NoPwd.sh: UID 1000のユーザーから始めて、/etc/passwd のユーザーを使用してなりすましブルートフォースを実行します。SK-credHarvest2.sh: エイリアスを介して偽の sudo を作成し、実際の sudo にリダイレクトすることで資格情報を取得します。SK-app-check.sh: 特定のサードパーティアプリ、デバイス、またはプログラミング言語に関連するsudoの脆弱性のチェックを実行します(まだ進行中)。SK-ttyInject.sh: TTYプッシュバックを悪用して、rootが管理下のユーザーで su - を使用した場合に任意のコマンドが実行されるようにします。SK-recursive-impersonate.sh: デフォルトの深さ3で再帰的ななりすましの識別を実行します。SK-alias-report.sh: 異なる基準でエイリアスの検索を実行します。SK-csuid-with-sudo.sh: カスタムSUIDバイナリを特定し、sudo がフルパスなしで実行されているかどうかを確認します。SK-Toolsのスクリプト SK-credHarvest2.sh は、エイリアスを介して偽のsudoを作成し、実際のsudoにリダイレクトすることで資格情報の取得を実行できます。実際には、bashでのみ動作します(現時点ではZSHなどでは動作/実装されていません)構成されたLinux。
sudoを使用する際に資格情報を求められたときに表示されるメッセージは、使用されているバージョンによって異なります。2つのオプションから選択できます(OSのバージョンによって異なります)。 表示されるメッセージの例(新と旧)
[!TIP] (新しい) [sudo] password for user:
(古い) Password:
全ユーザー向け (auser): ユーザーのホームディレクトリに対してroot権限または過剰な権限を持っており、簡単に資格情報を収集したい場合:```shell ./SK-credHarvest2.sh auser <new|old> ; source /home/*/.bashrc
現在のユーザー (cuser):```shell
./SK-credHarvest2.sh cuser <new|old> ; source /home/<currentuser>/.bashrc
[!CAUTION] 認証情報の収集を停止するには: 同じスクリプトを同じ引数で再度実行してください
出力: ログ /tmp/sk-crds.log に認証情報が含まれます
ルート権限、sudoersのバックアップへのアクセス、または/etc/sudoersへの読み取りアクセスのいずれかが必要です。```shell Usage: ./SK-alias-sudoers.sh -p <sudoers_path> -k [-u] [-r] [-m] [-c] | [-a] where -u: user | -r: runas | -m: host | -c: command | -a: all
### Bruteforce/Password Spray via su (SK-su-BruteForce.sh)
suを使用して、同時実行、タイムアウト、スリープを伴うパスワードのブルートフォースとパスワードスプレーを行います。```shell
Usage: ./SK-su-BruteForce.sh [-h|--help] [-m|--module MODULE] [-u|--user USER|-uf|--userfile USERFILE] [-p|--password PASSWORD|-pf|--pwdfile PASSFILE] [-c|--concurrent CONCURRENT] [-s|--sleep SLEEP] [-t|--timeouts TIMEOUTS]
Module: Password Bruteforce : pwdbf
Example: ./SK-su-BruteForce.sh -m "pwdbf" -u user -pf password.txt -c 5 -s 0.005 -t 0.9
Module: Password Spray : pwdspr
Example: ./SK-su-BruteForce.sh -m pwdspr -uf users.txt -p password -c 5 -s 0.005 -t 0.9
Module: User:Password Bruteforce : usrpwdbf
Example: ./SK-su-BruteForce.sh -m usrpwdbf -uf users-pwd.txt -c 5 -s 0.005 -t 0.9
可能性のあるsudoersバックアップファイルを /mnt/ /opt/ /etc/ /etc/ /home/ /app*/ で検索し、追加で引数として与えられた任意のディレクトリも検索します。```shell Usage: ./SK-search-sudoers.sh /tmp/
### Update dangerous bins - GTFOBINS (SK_dbins_update.sh)
危険なバイナリを更新するには、dbins/update に移動して ./SK_dbins_update.sh を実行してください。インターネット接続があることを確認してください。```shell
Usage: ./SK_dbins_update.sh
相対パスで悪用される可能性のあるバイナリを探します!secure_pathが設定されていない場合。```shell sudo -l <..snip..> (root) SETENV: NOPASSWD: /opt/support/purge.sh <..snip..>
Usage: ./SK-relative-path.sh /opt/support/purge.sh
<a name="contribute"></a>
# 貢献
`SUDO_KILLER` はオープンソースプロジェクトであり、あらゆるコントリビューションを高く評価しています。バグ修正の支援、新機能の提案、ドキュメントの改善、あるいは情報の発信など、どのような形でもコントリビューターとして歓迎します。ご提案、フィードバック、またはコントリビュートをご希望の場合は、Twitter か LinkedIn でご連絡いただくか、Pull Request を作成してください。サードパーティに関連する sudo の CVE(約175件あります)に関するコントリビューションを募集しており、どんな助けでもありがたく受け付けます。
- バグ報告: `SUDO_KILLER` の使用中にエラーメッセージが表示されたり、問題が発生した場合は、[バグ報告](https://github.com/TH3xACE/SUDO_KILLER/issues/new?assignees=&labels=type%3A+bug&template=bug.yaml&title=%F0%9F%90%9B+Bug+Report%3A+)を作成してください。
- 機能リクエスト: アイデアがある場合や、開発をより簡単かつ堅牢にする機能が不足している場合は、[機能リクエスト](https://github.com/TH3xACE/SUDO_KILLER/issues/new?assignees=&labels=type%3A+feature+request&template=feature.yml)を送信してください。
<a name="stars"></a>
## スター数の推移
皆様のご支援に感謝します!
[](https://starchart.cc/TH3xACE/SUDO_KILLER)
<a name="support"></a>
## サポート
<a href="https://www.patreon.com/TH3xACE">
<img src="https://assets.kitploit.com/production/public/readmes/2701/0c68395ad843ce5107774011154103ae8d17d44f3cafc73e6395bdd05da753c7.png" width="160">
</a>
<a name="credits"></a>
## 謝辞
私はこのスクリプトを独自に作成し、GitHub やその他のオンラインリソースを活用しました。また、CVE に関連するエクスプロイトの作成者・公開者にも謝意を表します。それらの詳細や参照情報は、エクスプロイト自体や、ツール実行時に付随するノートからたどることができます。特筆すべきは Vincent Puydoyeux 氏で、そのインスピレーションが本ツールの開発を促しました。また、Docker の複雑な処理とツール機能の向上に尽力してくれた Koutto 氏にも深く感謝します。さらに、Emilio Pinna(norbemi)氏と Andrea Cardaci(cyrus_and)氏には、GTFO Bins への貴重な貢献を通じて本プロジェクトの発展に大きく影響を与えていただき、心から感謝します。
<a name="disclaimer"></a>
## 免責事項
このスクリプトは教育目的のみを意図しています。実行するシステムの所有者の許可なく使用しないでください。通常の免責事項が適用されます。特に、私(TH3xACE)は、このプロジェクトが提供する情報や機能の直接的または間接的な使用によって生じたいかなる損害に対しても責任を負いません。作者(TH3xACE)またはインターネットプロバイダーは、これらのプログラムまたはその派生物の内容や誤用について一切の責任を負いません。これらのプログラムを使用することにより、スクリプトの使用によって生じたいかなる損害(データ損失、システムクラッシュ、システム侵害など)も作者の責任ではないという事実に同意したものとみなされます。
<a name="license"></a>
## ライセンス
`SUDO_KILLER` は MIT ライセンスの下でライセンスされており、使用時には適切なクレジットが期待されます。商用利用の場合は寄付をご検討ください。
SK-su-BruteForce.sh: sudo を介して特定のユーザーのパスワードブルートフォースまたはスプレーを実行します。SK-search-sudoers.sh: 現在のホスト上の可能性のある sudoers バックアップファイルを特定します。