Link da Maquina: https://www.vulnhub.com/entry/mr-robot-1,151/
Scan/Enumeracao
Host Discovery
Com a opcao -sn escaneamos os possiveis IPs da rede sem escanear as portas, sendo uma boa alternativa para realizar um host-discovery. Descobrimos que o nosso alvo esta no ip 192.168.110.6
1
sudo nmap -n -sn -T5 192.168.110.0/24
Port Discovery
Com o parametro “-p-“ do nmap varremos todas as portas possiveis do nosso alvo e encontramos 03 delas abertas. 22, 80, 443
1
sudo nmap -n -T5 -p- 192.168.110.6
Port Scan
Agora com o parametro “-A” do nmap vamos descobrir mais informacoes sobre essas portas abertas do nosso alvo
1
sudo nmap -n -T5 -A -p 22,80,443 192.168.110.6
- Porta 22: closed ssh
- Porta 80: http Apache httpd
- Porta 443: ssl/http Apache httpd
Enumeracao/Exploracao Web - Porta 80
Inspecao Visual
Vamos analisar a pagina pelo browser. A pagina permite interacao com o usuario… Mas nao temos nada demais
Analisando o codigo fonte nao encontramos nada de interessante
Fuzzy de diretorios - Gobuster
Ja que nao encontramos nada na pagina principal vamos rodar o gobuster para descobrir arquivos e/ou diretorios da aplicacao. Encontramos varios diretorios… vamos analisa-los
Temos um phpMyAdmin na maquina, porem so esta acessivel no localhost
Conseguimos encontrar paginas de um blog que foi feito em WordPress: /0 e /0000
Na pagina /Image encontramos uma imagem. Baixamos a imagem e analisamos com o binwalk e exiftool porem nao tem anda demais na imagem…
Na pagina /intro temos um video
Na pagina /license temos uma mensagem, porem nada de util
Na pagina /readme temos outra mensagem, mas nada de relevante ate agora
Na pagina /robots encotramos algo interessante… Direcionamento para dois arquivos: fsocity.dic e key-1-of-3.txt
Baixamos para nossa maquina o arquivo fsocity.dic
Acessamos o conteudo do arquivo key-1-of-3.txt
key-1-of-3.txt
O conteudo do arquivo parece ser um hash, porem nao conseguimos decodifi-lo, ainda…
- 073403c8a58a1f80d943455fb30724b9
fsocity.dic
Abrindo o arquivo temos uma wordlist especifica da maquina.
Tentei rodar o gobuster com essa wordlist e percebi que estava retornando varios resultados repetidos… Entao vamos elimina-los para performatizar o nosso trabalho
Eliminamos as strings repetidas. Agora vamos trabalhar com uma wordlist que tem 1.33% do tamanho da original…
1
2
3
wc -l fsocity.dic
cat fsocity.dic | sort | uniq > fsocity_performatica.txt
wc -l fsocity_performatica.txt
Bruteforce WordPress - WFUZZ
Ja que conseguimos uma wordlist direcionada para a maquina, vamos tentar um bruteforce no unico sistema de autenticacao que temos no momento
BurpSuite
Vamos jogar para o burp para pegar o formulario de autenticacao da pagina. Nesse caso temos alguns cookies que devem ser passados na hora do bruteforce…
WFUZZ
Agora vamos montar o nosso comando e realizar o bruteforce na pagina de login. Nao precisa ser bom de matematica para saber que se usarmos a wordlist que simplificamos para o login e senha simultaneamente teremos centenas de milhoes de combinacoes possiveis, o que seria inviavel…
Entao, primeiramente, vamos descobrir o login… Para isso vamos realizar o fuzzy na variavel do login (log) e na variavel da senha (pwd) vamos deixar qlqr string, pois nao e a nossa intecao acha-la agora.
- Obs: Note que passamos todos os cookies que estavam presentes na requisicao que interceptamos com o burp. Eles sao essenciais para o correto funcionamento do bruteforce
1
wfuzz -c --hl 59 -w fsocity_performatica.txt -b "s_fid=5C8C0DA9C46FAD2D-0CC0910B66C5EE08" -b "s_nr=1619060883629" -b "s_cc=true" -b "s_sq=%5B%5BB%5D%5D" -b "wordpress_test_cookie=WP+Cookie+check" -d "log=FUZZ&pwd=admin&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.110.6%2Fwp-admin%2F&testcookie=1" http://192.168.110.6/wp-login
Agora que encontramos 03 opcoes possiveis para o login vamos descobrir a senha. Podemos aproveitar o mesmo comando anterior, alterando o filtro e a variavel que vamos realizar o fuzzy (pwd)
1
wfuzz -c --hl 58 -w fsocity_performatica.txt -b "s_fid=5C8C0DA9C46FAD2D-0CC0910B66C5EE08" -b "s_nr=1619060883629" -b "s_cc=true" -b "s_sq=%5B%5BB%5D%5D" -b "wordpress_test_cookie=WP+Cookie+check" -d "log=Elliot&pwd=FUZZ&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.110.6%2Fwp-admin%2F&testcookie=1" http://192.168.110.6/wp-login
WordPress
WPScan
Rodamos o WPScan mas nao obtivemos nenhum resultado interessante
1
wpscan --url http://192.168.110.6 -e ap,at,u
Login
Com o bruteforce e algumas tentativas encontramos a credencial elliot:ER28-0652
Com a credencial conseguimos acesso ao painel de administracao do WordPress
Exploracao WordPress
Com base na nossa experiencia vamos dar uma olhada nos plugins e temas da apicacao. Vamos realizar um teste na aba de edicao de Temas para ver se conseguimos edita-lo…
Vamos acessar o painel de edicao de temas
Escolhemos um tema aleatoriamente e escrevemos um comentario
Enviamos o tema editado clicando em “Update FIle” e constatamos que conseguimos editar
Agora o proximo passo e pegar um daqueles “php do mal” que tem no Kali para enviar prar o servidor. Vamos copiar para o diretorio corrente
Vamos editar o Ip e a Porta do arquivo e copia-lo (todo o conteudo)
Apagamos o conteudo do Tema e colamos o nosso payload no lugar. Depois subimos o payload para o servidor
Shell Reverso
Vamos deixar a mesma porta, que configuramos no nosso payload, escutando para receber o shell e acessar a pagina que contem o nosso webshell…
1
nc -lnvp 7777
1
http://192.168.110.6/wp-content/themes/twentyfifteen/404.php
Shell Interativo
Para melhorar o shell que recebemos temos que seguir os seguinte passos
Depois de muita luta descobri que nao e bizu utilizar o rlwrap para receber o shell de linux
Depois de ter recebido o shell importamos o TTY com o seguinte comando
1
python -c 'import pty;pty.spawn("/bin/bash");'
Depois de importar o TTY apertar as teclas CTRL+Z
Retornaremos para o terminal da maquina kali. Nele digitaremos
1
stty raw -echo
Depois disso digitamos
fg
e apertamos duas vezes o enterAgora no shell do alvo digitamos
export TERM=xterm
e PRONTO!
Usuario “daemon”
Arquivos
Seguindo a metodologia verificamos as pastas do diretorio /home, pra verificar os usuarios da maquina
Encontramos o diretorio /home/robot. Temos permissao para acessa-lo. Dentro desse diretorio existem dois arquivos key-2-of-3.txt e password.raw-md5. Conseguimos ler somente o password.raw-md5. O conteudo, aparentemente, e uma credencial, porem a senha e um hash, que possivelmente esta em raw-md5
- robot:c3fcd3d76192e4007dfb496cca67e13b
hashes.com
Conseguimos decodificar o hash no site hashes.com
- c3fcd3d76192e4007dfb496cca67e13b:abcdefghijklmnopqrstuvwxyz
Usuario “robot”
Conseguimos logar com o usuario com a credencial robot:abcdefghijklmnopqrstuvwxyz
key-2-of-3.txt
Agora conseguimos ler o arquivo key-2-of-3.txt
- 822c73956184f694993bede3eb39f959
Escalando privilegio
Seguindo os passos da metodologia, nao encontramos nenhum binarios que podemos executar como sudo. nao encontramos nada de interessante no historico. Conseguimos encontrar algo muito interessante que nao e padrao… Listando os arquivos com permissao SETUID percebemos que o nmap esta com permissao especial para ser executado como se o dono fosse.
1
find / -perm -4000 2> /dev/null
NMAP –interactive
Conseguimos escalar privilelgio com o comando nmap –interactive
1
2
nmap --interactive
> !sh
Usuario “root”
Conseguimos pegar a ultima flag
key-3-of-3.txt
- 04787ddef27c3dee1ee161b21670b4e4
Bonus
Seja meticuloso!
Na pagina /license olhamos somente a parte superior, porem se rolarmos a barra da pagina para baixo encontraremos mais coisas… Ele nos da um hash
- ZWxsaW90OkVSMjgtMDY1Mgo=
Decodificando o hash em base64 temos as credencias que conseguimos atrave do bruteforce
1
echo -n "ZWxsaW90OkVSMjgtMDY1Mgo=" | base64 -d
- elliot:ER28-0652
Metasploit
E possivel explorar o wordpress usando metasploit