
Uma versão açucarada do RottenPotatoNG, com um pouco de suco, ou seja, outra ferramenta de escalação de privilégio local, de contas de serviço do Windows para NT AUTHORITY\SYSTEM.
Uma versão açucarada do RottenPotatoNG, com um pouco de suco, ou seja, outra ferramenta de Escalação de Privilégio Local, de Contas de Serviço do Windows para NT AUTHORITY\SYSTEM
O RottenPotatoNG e suas variantes aproveitam a cadeia de escalação de privilégios baseada no serviço BITS service ter o ouvinte MiTM em 127.0.0.1:6666 e quando você tem privilégios SeImpersonate ou SeAssignPrimaryToken. Durante uma revisão de build do Windows, encontramos uma configuração onde BITS estava intencionalmente desabilitado e a porta 6666 estava ocupada.
Decidimos weaponizar o RottenPotatoNG: Diga olá ao Juicy Potato.
Para a teoria, veja Rotten Potato - Privilege Escalation from Service Accounts to SYSTEM e siga a cadeia de links e referências.
Descobrimos que, além do BITS, existem vários servidores COM que podemos abusar. Eles só precisam:
IMarshalApós alguns testes, obtivemos e testamos uma extensa lista de CLSIDs interessantes em várias versões do Windows.
JuicyPotato permite que você:
CLSID alvo
escolha qualquer CLSID que desejar. Aqui você encontra a lista organizada por SO.
Porta de escuta COM
defina a porta de escuta COM que preferir (em vez da porta 6666 codificada)
Endereço IP de escuta COM
vincule o servidor a qualquer IP
Modo de criação de processo
dependendo dos privilégios do usuário impersonado, você pode escolher entre:
CreateProcessWithToken (necessita de SeImpersonate)CreateProcessAsUser (necessita de SeAssignPrimaryToken)bothProcesso a ser iniciado
inicie um executável ou script se a exploração for bem-sucedida
Argumento do processo
personalize os argumentos do processo iniciado
Endereço do servidor RPC
para uma abordagem furtiva, você pode autenticar em um servidor RPC externo
Porta do servidor RPC
útil se você quiser autenticar em um servidor externo e o firewall estiver bloqueando a porta 135...
Modo TESTE
principalmente para fins de teste, ou seja, testar CLSIDs. Ele cria o DCOM e imprime o usuário do token. Veja
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

Se o usuário tiver privilégios SeImpersonate ou SeAssignPrimaryToken, então você é SYSTEM.
É quase impossível impedir o abuso de todos esses servidores COM. Você poderia pensar em modificar as permissões desses objetos via DCOMCNFG, mas boa sorte, isso será desafiador.
A solução real é proteger contas e aplicações sensíveis que rodam sob as contas * SERVICE.
Parar o DCOM certamente inibiria este exploit, mas poderia causar um sério impacto no sistema operacional subjacente.
Uma build automática está disponível. Os binários podem ser baixados da seção Artifacts aqui.
Também disponível no BlackArch.