Só salve rapa!
Hoje vou trazer o passo a passo de como invadir a máquina Grandpa do HTB.
Para invadir essa máquina são necessárias as habildades:
- Conhecimentos Básicos em Windows
- Enumeração
- Uso do Metasploit
- Identificar processos estáveis
- Conhecimento básico em escalação de privilégio no Windows
Só vamos!
Enumeração
Começei com aquele scanner de portas de lei.
Encontrei apenas a porta 80 rodando o serviço Microsoft IIS httpd 6.0.
A primeira coisa que faço sempre que me deparo com um pentest Web, é a enumeração, que envolve dar uma olhada na página, seu código fonte, scanner de diretórios e tecnologias utilizadas na aplicação.
Dessa vez ao fazer todo esse processo, não encontrei nada relevante para prosseguir com a invasão.
Como não encontrei nada, então resolvi procurar por exploits da versão do IIS 6.0.
Com uma breve pesquisa já encontrei resultados interessantes, como o exploit ScStoragePathFromUrl Overflow que faz um buffer overflow no Webdav.
Ao realizar uma pesquisa no metasploit, vi que lá já tinha o exploit pronto para ser executado, o que facilitou meu processo de exploração. Então apenas realizei as configurações do RHOST e do LHOST e consegui obter acesso ao alvo.
Ao tentar obter a flag user.txt, vi que ainda não tinha permissão de acesso. Acredito que seja algum problema de estruturamento do lab… Mas sem problemas, vamos partir para a escalação de privilégio, e assim que obtermos acesso privilegiado no host vamos adquirir as 2 flags.
Escalação de Privilégio
O metesploit tem um módulo que facilita bastante nossa pesquisa por vulnerabilidades no sistema, que é o local_exploit_suggester. Ao rodar ele em cima da sessão criada, ele me trouxe as possiveis vulnerabilidades no host para escalação do privilégio.
Então ao rodar o suggester, se atente no status, que informará se o host é vulnerável ou não a tal exploit.
Nesse caso, filtrando o resultado, temos as seguintes vulnerábilidades/exploits:
exploit/windows/local/ms10_015_kitrap0d: The service is running, but could not be validated. exploit/windows/local/ms14_058_track_popup_menu: The target appears to be vulnerable. exploit/windows/local/ms14_070_tcpip_ioctl: The target appears to be vulnerable. exploit/windows/local/ms15_051_client_copy_image: The target appears to be vulnerable. exploit/windows/local/ppr_flatten_rec: The target appears to be vulnerable.
Teóricamente o host é vulnerável a todos a esses exploits, então resolvi utilizar o ms10_015_kitrap0d.
Eu acho de extrema importância tentar entender o que o exploit faz, e não apenas utilizá-lo. Então sempre uso o show info e vejo as refêrencias sobre o exploit.
"quando o acesso a 16 bits aplicativos está habilitado em uma plataforma x86 de 32 bits, não valida corretamente determinadas chamadas do BIOS, o que permite que usuários locais obtenham privilégios criando uma estrutura de dados VDM_TIB no Thread Environment Block (TEB) e, em seguida, chamando a função NtVdmControl para iniciar o Subsistema Windows Virtual DOS Machine (também conhecido como NTVDM), levando a exceções tratadas incorretamente envolvendo o manipulador de trap #GP (nt!KiTrap0D), também conhecido como "Vulnerabilidade do manipulador de exceção do kernel do Windows"
Ao configurar os parâmetros e excutar o exploit, me deparo com a falha de Acesso Negado.
Obs: A lport (porta local) deve ser diferente da utilizada na sessão criada (por um motivos óbvio, a porta utilizada na primeira sessão já está em uso para a primeira sessão). No meu exemplo usei a porta 4444 no primeira sessão, e estou usando a 4445 nessa.
Então volto para a sessão da shell da máquina invadida para tentar entender sobre as permissões que tenho.
Com o comando whoami consigo ver em qual usuário estou logado, que no caso é p nt authority\network service
Com o comando ps no meterpreter, consigo filtrar todos os processos em execução no alvo, como id, pid, usuário que executa tal processo…etc.
Ao invadir a máquina com o exploit ScStorage, nosso acesso a máquina utilizou rundll32.exe (pid 2224) para a invasão. Ao utilizar o comando ps vejo que o usuário network service não está executando esse processo, o que provavelmente está impactando no problema de permissão.
Nesse caso, utilizei o comando migrate. O comando migrate simplismente irá migrar meu acesso para outro processo que eu escolher. Nesse caso escolhi o processo wmiprvse.exe (pid 1872), o qual nosso usuário network services está executando.
Após migrar o processo, consigo executar com sucesso o exploit ms10_015_kitrap0d e obter acesso privilegiado, assim obtendo as 2 flags user.txt e root.txt
Seja o primeiro a comentar