Salva rapaziada, tudo beleza?
Hoje vou trazer a resolução do CTF Mr Robot do Try Hack Me.
Para concluir o CTF, é preciso capiturar 3 flags. Então marcha e boa!
Enumeração
Com o nmap fiz o scanner das portas abertas, e encontrei as portas 80 e 443, rodando um serviço web.
nmap -v -sSV -p- 10.10.36.60
Navegando pela página não encontro nada relevante.
Na aplicação web é possivel utilizar alguns comandos como prepare, fsociety, inform… etc… Os comandos apresentam alguns cenários diferentes sobre a série Mr. Robot, mas nada relevante para invasão da máquina.
Com o gobuster fiz uma busca por diretórios e encontrei alguns diretórios relevantes.
Acessei um por um para procurar por algum vetor de ataque.
Exploração
No diretório robots.txt encontrei 2 arquivos.
http://10.10.36.60/robots.txt
key-1-of-3.txt é a primeira key do desafio.
http://10.10.36.60/key-1-of-3.txt
fsocity.dic é uma wordlist, normalmente as wordlists são utilizadas para ataques de Brute Force (Força Bruta), então o arquivo será util.
http://10.10.36.60/fsocity.dic
O diretório wp-login é a página de login de um wordpress. Com a wordlist encontrada posso tentar um ataque de Brute Force nele.
http://10.10.36.60/wp-login
Para realizar o ataque de força bruta, irei utilizar o hydra. Para utilização do hydra primeiro preciso coletar os parâmetros de login.
Então primeiro utilizei o Burp Suite para coletar as informações necessárias para realizar o brute force pelo hydra.
log – Campo que coleta o usuário de login
pwd – Campo que coleta a senha
Invalid username – Erro que retorna ao tentar fazer login com um usuário invalido
Então primeiro irei realizar o brute force apenas no campo do usuário, pois se eu utilizar a wordlist no campo de Usuário e senha em uma única vez, o tempo que terei que esperar para conclusão será bem maior.
hydra -V -L fsocity.dic -p teste 10.10.36.60 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log:Invalid username."
No comando acima estou informando que o campo de login será a wordlist fsocity.dic, o password será teste, e que quero que o hydra me retorne qualquer resposta que seja diferente de “Invalid username“, assim quando ela encontrar um usuário válido a mensagem de erro irá mudar.
Usuário: Elliot
Agora que descobri o usuário, irei fazer o brute force na senha.
hydra -V -l Elliot -P fsocity.dic 10.10.36.60 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log:The password you entered for the username"
Agora estou informando que meu login será Elliot e que minha senha será a wordlist fsocity.dic. Também alterei a mensagem de erro, então qualquer coisa que seja diferente de “The password you entered for the username” confirmará a senha válida.
Senha: ER28-0652
E assim consegui me autenticar no wordpress.
De cara vejo que a versão dele é a 4.3.1, isso vai me ajudar a procurar por vulnerabilidades conhecidas nele. Com uma pesquisa rápida no google, encontro o site com algumas formas de invasão.
Resolvi utilizar a edição de uma página já existente para inserir um shell reverso. Em appearence > Editor > 404 Template, eu insiro o código de shell reverse php com as informações do ip do meu host e porta que irá receber o shell reverse.
Após a edição do código da pagina, abro a porta em meu host local e acesso a página através da web. Assim consigo acesso ao shell do servidor.
nc -vnlp 443
http://10.10.36.60/wp-content/themes/twentyfifteen/404.php
No diretório /home/robot, encontrei o arquivo key-2-of-3.txt que aparenta ser a segunda key. Porém apenas o usuário robot tem permissão de leitura da chave.
No mesmo diretório existe um arquivo chamado password.raw-md5, que tudo indica ser a senha do usuário robot criptografada em md5.
Então utilizei o site CrackStation para quebra do hash, e assim consegui me autenticar no usuário robot e descobrir a segunda key.
User: robot
Pass: abcdefghijklmnopqrstuvwxyz
Escalação de Privilégio
Fiz uma pesquisa por arquivos com permissões de SUID, que permite a utilização do meu usuário atual com execução de root. Na pesquisa encontrei o nmap.
find / -user root -perm /4000 2>/dev/null
Em uma breve pesquisa do google, procuro como utilizar o nmap para escalação do privilégio, e assim consigo utilizar o nmap para abrir uma shell com permissões de root, assim conseguindo acesso a terceira e ultima key.
/usr/local/bin/nmap --interactive
!sh
Seja o primeiro a comentar