WindowsサービスアカウントからNT Authority Systemまで、少しのジュースを備えたRottenPotatongの砂糖版、つまり、別のローカル特権エスカレーションツール
RottenPotatongとそのバリエーションは、 127.0.0.1:6666 6666にMITMリスナーを持つBITSサービスに基づいて特権エスカレーションチェーンを活用し、 SeImpersonateまたはSeAssignPrimaryToken特権を持っています。 Windowsビルドのレビュー中に、 BITSが意図的に無効になり、ポート6666撮影されたセットアップが見つかりました。
Rottenpotatongを武器化することにしました:ジューシーなジャガイモに挨拶します。
理論については、腐ったポテト - サービスアカウントからシステムへの特権エスカレーションを参照し、リンクと参照のチェーンに従ってください。
BITS以外に、私たちが悪用できるいくつかのCOMサーバーがあることを発見しました。彼らはただする必要があります:
IMarshalインターフェイスを実装しますいくつかのテストの後、いくつかのWindowsバージョンで興味深いCLSIDの広範なリストを取得してテストしました。
JuicyPotatoでは次のことを可能にします
ターゲットclsid
必要なCLSIDを選択してください。ここでは、OSが編成したリストを見つけることができます。
comリスニングポート
あなたが好むcomのリスニングポートを定義します(マーシャルされたハードコードされた6666の代わりに)
comリスニングIPアドレス
任意のIPでサーバーをバインドします
プロセス作成モード
fronfersonedユーザーの特権に応じて、次のように選択できます。
CreateProcessWithToken ( SeImpersonateが必要)CreateProcessAsUser ( SeAssignPrimaryTokenが必要)both起動するプロセス
搾取が成功した場合、実行可能ファイルまたはスクリプトを起動します
引数を処理します
起動したプロセス引数をカスタマイズします
RPCサーバーアドレス
ステルスアプローチの場合、外部RPCサーバーに認証できます
RPCサーバーポート
外部サーバーに認証したい場合に便利で、ファイアウォールがポート135ブロックしています...
テストモード
主にテスト目的で、つまりCLSIDのテスト。 DCOMを作成し、トークンのユーザーを印刷します。テストについてはこちらをご覧ください
T:>JuicyPotato.exe
JuicyPotato v0.1
Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port
Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)
-c <{clsid}>: CLSID (default BITS:{4991d34b-80a1-4291-83b6-3328366b9097})
-z only test CLSID and print token's user

ユーザーがSeImpersonateまたはSeAssignPrimaryToken特権を持っている場合、あなたはシステムです。
これらすべてのCOMサーバーの悪用を防ぐことはほぼ不可能です。 DCOMCNFGを介してこれらのオブジェクトの権限を変更することを考えることができますが、幸運を祈ります。これは挑戦的です。
実際の解決策は* SERVICEアカウントの下で実行される機密のアカウントとアプリケーションを保護することです。 DCOMを停止することは確かにこのエクスプロイトを阻害しますが、基礎となるOSに深刻な影響を与える可能性があります。
自動ビルドが利用可能です。バイナリは、ここのアーティファクトセクションからダウンロードできます。
Blackarchでも利用できます。