TryHack3M: Subscribe

Classificação : Medium

Criadores : ar33zy, Dex01, 1337rce

Ferramentas : rustscan, nmap, gobuster, burpsuite, sqlmap e splunk

Parte I : Desafio Ofensivo

Enumeração

# rustscan -a 10.10.237.52 -- -A
.----. .-. .-. .----..---.  .----. .---.   .--.  .-. .-.
| {}  }| { } |{ {__ {_   _}{ {__  /  ___} / {} \ |  `| |
| .-. \| {_} |.-._} } | |  .-._} }\     }/  /\  \| |\  |
`-' `-'`-----'`----'  `-'  `----'  `---' `-'  `-'`-' `-'
The Modern Day Port Scanner.
________________________________________
: http://discord.skerritt.blog         :
: https://github.com/RustScan/RustScan :
 --------------------------------------
😵 https://admin.tryhackme.com

[~] The config file is expected to be at "/root/.rustscan.toml"
[!] File limit is lower than default batch size. Consider upping with --ulimit. May cause harm to sensitive servers
[!] Your file limit is very small, which negatively impacts RustScan's speed. Use the Docker image, or up the Ulimit with '--ulimit 5000'. 
Open 10.10.237.52:22
Open 10.10.237.52:80
Open 10.10.237.52:8000
Open 10.10.237.52:8089
Open 10.10.237.52:8191
Open 10.10.237.52:40009

Começamos com uma varredura do Nmap e encontramos seis portas abertas, das quais apenas as portas 80 e 40009 são relevantes para a parte ofensiva.

# nmap -sV -p22,80,8000,8089,8191,40009 -Pn -T5 10.10.237.52 
Starting Nmap 7.93 ( https://nmap.org ) at 2024-05-26 23:22 UTC
Nmap scan report for ip-10-10-237-52.eu-west-1.compute.internal (10.10.237.52)
Host is up (0.00033s latency).

PORT      STATE SERVICE         VERSION
22/tcp    open  ssh             OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp    open  http            Apache httpd 2.4.41 ((Ubuntu))
8000/tcp  open  http            Splunkd httpd
8089/tcp  open  ssl/http        Splunkd httpd
8191/tcp  open  limnerpressure?
40009/tcp open  http            Apache httpd 2.4.41

Visitar a porta 40009 por enquanto nos dá apenas 403 respostas em cada recurso, portanto não podemos enumerá-lo ainda mais.

Passamos para o endpoint na porta 80 e visitamos o site e vemos que há uma página de inscrição e login. O registro está desativado no momento e não conseguimos encontrar nenhum outro diretório à primeira vista via Gobuster

Olhando para o código-fonte da página de inscrição, encontramos um pedaço de JavaScript reduzido:

Vamos adicionar o domínio capture3millionsubscribers.thm no arquivo /etc/hosts do nosso kali

# echo '10.10.237.52 capture3millionsubscribers.thm' >> /etc/hosts                                                             

Em seguida alteramos o form action para obter o código de convite inviteCode1337HM.php

Fornecendo o código de convite, obtemos algumas credenciais.

Exploração

E agora podemos fazer login com as credenciais encontradas

E fomos redirecionados para um dashboard, enfrentando salas de treinamento divididas em VIP e free.

Vemos que o status VIP é definido por um parâmetro Cookie, alteramos para true

Definindo como true, podemos chegar à sala Advanced Red Teaming. Aqui deveremos ser capazes de iniciar uma máquina como estamos acostumados no TryHackMe.

Verificando a fonte, vemos um script referenciando um campo oculto para verificar o status VIP

Ele faz uma solicitação para/BBF813FA941496FCE961EBA46D754FF3.php

Depois de adicionar admin1337special.hackme.thmem /etc/hostentrar em contato com ele, somos redirecionados para /public/html, mas este site ainda nos dá um 403.

Usando o gobuster nesse diretório conseguimos localizar a página de login, talvez aqui possamos fazer uso do token.

E temos uma página para fornecer um token. Usamos o token.

Depois de fornecer o token, somos solicitados a fazer login, mas não encontramos nenhum crédito de administrador até agora. Tentar os créditos de inscrição não funciona.

Capturamos uma solicitação de login arbitrária para usar o SQLMap, talvez consigamos despejar o banco de dados atrás do login.

Salvar em um arquivo txt

$ cat myinj 

POST /api/login.php HTTP/1.1
Host: admin1337special.hackme.thm:40009
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://admin1337special.hackme.thm:40009/public/html/login
Content-Type: application/json
Origin: http://admin1337special.hackme.thm:40009
Content-Length: 39
Connection: close
Cookie: PHPSESSID=vdcfcvlf88u99gjocfefqj1lpr

{"username":"admin","password":"12345"}    

Acionando o SLQMap na solicitação, podemos fazer dump do banco de dados

Após o login, estamos no painel e podemos selecionar uma ação, escolhendo Inscrever-se e depois Definir Opções, nada acontece à primeira vista.

Mas depois de voltar para hackme.thm/ a bandeira final é apresentada.

Parte II : Desafio Defensivo

Vamos para Pesquisa e relatórios e fornecemos a seguinte consulta.

index=*com um tempo de All time.

Observamos o user-agent para descobrir quais requisições foram feitas, e descobrimos a ferramenta

Para descobrir o IP de origem do invasor basta filtrar pelo user_agent.

Para filtrar os eventos observados pelo ip filtramos pelo ip:

Tentamos filtrar todas as consultas feitas no bloco de dados bruto para determinar a tabela de destino.

Usamos o cyberchef para decodificar o URI

Last updated