Link da Maquina: https://www.vulnhub.com/entry/tommy-boy-1,157/
Scan/Enumeracao
Host Discovery
- Com o arp-scan descobrimos que o nosso alvo esta no ip 192.168.150.118
1
sudo arp-scan -I eth1 192.168.56.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, 8008
1
sudo nmap -n -T5 -p- 192.168.56.106
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,8008 192.168.56.106
- Porta 22: OpenSSH 7.2p2 Ubuntu 4ubuntu1 (Ubuntu Linux; protocol 2.0)
- Porta 80: Apache httpd 2.4.18 ((Ubuntu))
- Porta 8008: Apache httpd 2.4.18 ((Ubuntu))
Enumeracao/Exploracao Web - Porta 80
Browser
- O primeiro passo quando temos uma aplicacao web e verifica-la no browser
Codigo Fonte
- Quando temos uma pagina web e nosso DEVER olhar o codigo fonte!
- Nos comentarios do codigo fonte tem uma conversa entre o Nick e o Richard sobre o acesso a algum blog. O Nick disse que escondeu o blog no lugar que aparece em um video do youtube
Fuzzy de diretorios - Gobuster
- No primeiro gobuster ele retornou varios diretorios com o codigo 301, que significa redirecionamento
1
gobuster dir -u http://192.168.56.106 -w /usr/share/wordlists/dirb/big.txt
- Para contornar isso vamos utilizar o grep para retirar o que nao queremos ver
1
gobuster dir -u http://192.168.56.106 -w /usr/share/wordlists/dirb/big.txt | fgrep -v 301
/robots.txt
- Quando fizemos o port scan da maquina o nmap ja tinha nos retornado o robots.txt, e agora com o gobuster confirmamos a existencia dele. Acessando ele temos algumas paginas…
- /6packsofb…soda
- /lukeiamyourfather
- /lookalivelowbridge
- /flag-numero-uno.txt
/6packsofb…soda
- Acessando a pagina so temos uma foto que, a principio, nao tem nada de interessante
/lukeiamyourfather
- Temos somento uma imagem inutil nessa pagina
/lookalivelowbridge
- Mais uma imagem inutil
/flag-numero-uno.txt
- No texto esta dizendo que essa e a primeira de cinco flags da maquina: B34rcl4ws
Wordpress - 192.168.56.106/prehistoricforest
- Seguindo a dica do comentario o lugar do que aparece no video do youtube e o PREHISTORIC FOREST
- Conseguimos acessar o blog pelo browser
Posts Blog
Conseguimos achar algumas informacoes importantes nos posts do blog
Achamos o caminho da segunda flag no comentario do primeiro post do blog. Conseguimo pega-la
- O quarto post esta protegido por senha
- No ultimo post um dos usuarios pede a senha para ver o post protegido que encontramos anteriormente. O dono do post com senha diz que a senha esta no diretorio /richard
/richard
- No diretorio informado tem somente uma imagem
Analisando a imagem
Baixamos a imagem para a kali para verificar o que ela vai nos fornecer…
O comando “binwalk” nao retornou nada de interessante
Com o comando “strings” conseguimos verificar que foram modificados alguns metadados da imagem
Agora com o comando “exif” conseguimos verificar a dica de uma forma mais performatica
Comentario Bloqueado
Tentamos jogar o o comentario que encontramos na foto como senha mas nao deu certo
Entao jogamos no google o comentario e observamos que se trata de um hash MD5
- A ferramente conseguiu decodificar o hash que passamos: spanky
- Lendo o comantario temos algumas informacoes importantes, mas resumindo, o importante e que temos FTP rodando na maquina, com um usuario nickburns com senha fraca, em uma porta que nao e a padrao (21) e que e sobe e cai de 15 em 15 minutos
FTP - Porta 65534
- Rodamos o nmap e nao retornou nada, entao esperamos aproximadamente 15 min e rodamos novamente o nmap e conseguimos achar a porta aberta que esta o FTP
Hydra FTP
Ja que conseguimos a dica que o usuario possui uma senha fraca, entao vamos tentar quebrar com o hydra
Uma boa pratica para utilizar o hydra e utilizar o parametro “-e nsr” que fara com que o hydra teste a senha com o mesmo nome do usuario, senha nula e o nome do usuario de tras pra frente. Conseguimos achar a credencial nickburns:nickburns
1
hydra -l nickburns -P /usr/share/wordlists/rockyou.txt ftp://192.168.56.106 -s 65534 -f -e nsr -vV -I
Login FTP
- Agora vamos logar no FTP e baixar o arquivo “readme.txt” que ta la dentro
1
ftp 192.168.56.106 65534
Obs: Sempre que temos uma aplicacao e nao temos a senha e uma boa praticar testar as senhas obvias e a senha padrao da aplicacao
O arquivo fala algo sobre um diretorio chamado “/NickIzL33t que esta em algum lugar da maquina, que a principio temos permissao de escrita nele e la tem um arquivo compactado e criptografado das senhas do Diretor da Empresa (Big Tom). Parece que tem uma dica da senha para descriptografar o arquivo…
Depois de varias tentativas nao encontramos esse diretorio na porta 80
Enumeracao/Exploracao Web - Porta 8008
Browser
- Acessando pelo browser, temos uma mensagem do usuario. A pagina diz que e apenas para as coisas secretas do usuario Nick… Bom, pode ser que aquele diretorio dos arquivos pessoais do Nick esteja aqui
/NickIzL33t
- Conseguimos achar o diretorio, porem, a principio nao tem nada. Apenas uma mensagem dizendo que somente o usuario Nick e Steve Jobs podem ver o conteudo…
User Agent
- Parece que temos uma pegadinha aqui… Para conseguir acessar o conteudo temos que mudar o useragent do navegador para um da apple, na verdade tem que ser um useragent de um Iphone. Utilizamos a extensao do Firefox “User-Agent Switcher and Manager para mudar o user agent e conseguimos avancar essa etapa…
- Agora conseguimos ter acesso ao diretorio, porem para acessar o conteudo temos que passar o nome corretamente do arquivo .html
Gobuster - Procurando o arquivo html
- Para descobrir qual e o nome do arquivo utilizamos o gobuster para testar os possiveis nomes do arquivo. Ele nos retornour falsos positivos, mas conseguimos achar o nome do arquivo: /fallon1.html . Lembrando que temos que passar o user agent correto para conseguirmos acessar.
1
gobuster dir -a "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/80.0.3987.95 Mobile/15E148 Safari/604.1" -u http://192.168.56.106:8008/NickIzL33t -w /usr/share/wordlists/rockyou.txt -x html | grep 200
/fallon1.html
- Conseguimo entrar na pagina web
Dica (hint.txt)
- No primeiro link que aparece na pagina temos algumas dicas para formar a senha para descriptografar o arquivo de senhar do Big Tom
- “bev”
- 01 caractere maiusculo
- 02 numeros
- 02 caracteres minusculos
- 01 simbolo (caractere especial)
- Por ultimo, o ano que Tommy Boy estreou nos cinemas
Flag (flagtres.txt)
- Achamos mais uma flag no segundo link da pagina
Backup de Senhas (t0msp4ssw0rdz.zip)
- No terceiro link conseguimos baixar o arquivo de backup de senhas do Big Tom
Criando a Wordlist
- Sabemos que a senha comeca com “bev” e termina com o ano que Tommy Boy estreiou nos cinemas (1995). E no meio tem 01 caractere maiusculo, dois numeros, 02 minusculos e 01 especial. Entao vamos fazer um script para poder gerar a wordlist
Crunch
Vamos criar uma wordlist com o crunch, propragam especifico para criar wordlists…
Aqui esta a sintaxe utilizada para o comando crunch
Formato da nossa senha: “bev[A-Z][1–9][1–9][a-z][a-z][symbol]1955”
Chega de teoria e vamos criar a nossa senha…
1
crunch 13 13 -t bev,%%@@^1995 -o bigtom_wordlist.txt
Script python
- Para fins didaticos vamos demonstrar tambem um script em python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/python
import string
import itertools
prefix = 'bev'
suffix = '1995'
uppercase = list(string.ascii_uppercase)
lowercase = list(string.ascii_lowercase)
numbers = list(string.digits)
symbols = list('$%^&*()-_+=|\<>[]{}#@/~')
part1 = uppercase
part2 = [''.join(s) for s in itertools.product(numbers, repeat=2)]
part3 = [''.join(s) for s in itertools.product(lowercase, repeat=2)]
part4 = symbols
candidates = reduce(lambda a,b: [i+j for i in a for j in b], [part1, part2, part3, part4])
for candidate in candidates:
print prefix + candidate + suffix
![](/assets/img/Vulnhub/TommyBoy-1/script-python-wordlist.png)
- Agora e so salvar, dar permissao e executa-lo jogando a saida para um arquivo…
Fcrackzip - t0msp4ssw0rdz.zip
- Vamos quebrar a senha do arquivo .zip com o fcrackzip… Caso nao tenha na maquina e so baixar, ele ja esta no repositorio da kali
1
fcrackzip -v -D -u -p bigtom_wordlist.txt t0msp4ssw0rdz.zip
- Conseguimos achar a senha: bevH00tr$1995
Unzip - t0msp4ssw0rdz.zip
- Descompactamos o arquivo com a senha encontrada
t0msp4ssw0rdz.zip - passwords.txt
- Lendo o arquivo descompactado conseguimos observar algumas credenciais do Big Tommy
Blog Callahan - WordPress
- Tentamos logar com alguma das credenciais que encontramos no arquivo porem nao conseguimos nada de interessante
WPSCAN
- Ja que e um wordpress vamos rodar o wpscan procurando por plugins, temas e usuarios
1
wpscan --url http://192.168.56.106/prehistoricforest -e ap,at,u
- Conseguimos achar alguns usuarios
- tommy
- richard
- tom
- Tom Jr.
- Big Tom
- michelle
Brute Force
- Depois de varias tentativas, sem sucesso, com as senhas que tinhamos encontrado vamos fazer um bruteforce na pagina de login da aplicacao. Vou demonstrar de duas formas para fins de registro
WPScan
1
sudo wpscan --url http://192.168.56.106/prehistoricforest -U usuarios-wp.txt -P /usr/share/wordlists/SecLists/Passwords/darkweb2017-top10000.txt
- Conseguimos achar a credencial: tom:tomtom1
- Utilizamos essa wordlist para ser um pouco mais rapido, poderia ser a rockyou tbm
WFUZZ
1
wfuzz -c --hl 71,72 -w usuarios-wp.txt -w password_wp.txt -d "log=FUZZ&pwd=FUZ2Z" http://192.168.56.106/prehistoricforest/wp-login.php
- Conseguimos obter o mesmo resultado: tom:tomtom1
- Utilizamos uma wordlist que criamos para fins didaticos
- Para verificar como e o formulario de envia (POST) podemos utilizar o BurpSuite ou entao usar a ferramente de desenvolvedor do navegador clicando em Network -> Request
Login WordPress
Conseguimos realizar o login com a credencial encontrada.
Nao conseguimos encontrar nada exploravel que nos retornasse um shell do alvo
Lembrando da dica que tinha no arquivo das senhas… Dizia algo sobre o complemento da senha de um dos usuarios escrito no rascunho do blog
Tem algo nos rascunhos desse ususario…
- O rascunho diz que a parte numerica, do usuario bigtommysenior, que falatava da senha e 1938!!. A senha completa e: fatguyinalittlecoat1938!!
SSH
No arquivo passwords.txt diz que o usuario bigtommysenior e do servidor Callahan.
Conseguimo logar na servidor via ssh
1
ssh bigtommysenior@192.168.56.106
Usuario Bigtommysenior
- Conseguimos encontrar a quarta flag
Quinta e ultima flag
Na quarta flag tinha uma dica dizendo que a ultima flag esta no arquivo “5.txt”
Com o find procuramos onde esta o arquivo e realmente ele esta no /, so que esta oculto
- Verificamos que nao conseguimos ler o arquivo, pois o mesmo pertence ao usuario “www-data” e somente o dono pode ler
Entao vamos escalar privilegio para o ususario “www-data” para conseguir a ultima flag
Vamos procurar por diretorios que temos permissar de escrita. Achamos um interessante…
1
find / -type d -writable 2> /dev/null | grep -v sys
- Achamos um interessante: /var/thatsg0nnaleaveamark/NickIzL33t/P4TCH_4D4MS/uploads
P4TCH_4D4MS
- Achamos a pagina web para upload no endereco: http://192.168.56.106:8008/NickIzL33t/P4TCH_4D4MS/
- No arquivo index.html diz que so esta aceitando subir imagens para o servidor
- Lendo o .htaccess podemos ver que esta aceitando arquivos do tipo “.gif”
Shell Reverso - www-data
Copiamos o /usr/share/webshells/php/php-reverse-shell.php e alteramos o IP e a PORTA para conseguir o shell reverso
Agora vamos mudar o magic number do arquivo para ele ser reconhecido como GIF e mudar tambem a extensao do arquivo para .gif
- Conseguimos subir o arquivo que contem o nosso payload
- Agora e so deixar a porta escutando na kali e chamar o nosso backdoor para conseguir o shell
- Conseguimos o Shell do usuario www-data
Flag 5
- Conseguimos pegar a ultima flag
LOOT.ZIP
Na quinta flag ele diz que se juntarmos o conteudo das 5 flags formara a senha para descompactar o arquivo LOOT.zip… Entao vamos la
Juntando o conteudo de todas as flags temos: B34rcl4wsZ4l1nskyTinyHeadEditButtonButtcrack
Conseguimos descompactar e terminar a maquina!