
Uma prova de conceito da CVE do Traefik para entender o impacto
Bem-vindo ao desafio Capture the Flag (CTF) da Shadow Corp! Este desafio testará suas habilidades em identificar e explorar vulnerabilidades relacionadas a cabeçalhos de segurança e comportamento de proxy HTTP. Sua missão é contornar as proteções e descobrir segredos ocultos na aplicação web da Shadow Corp.
Você descobriu a interface web pública da Shadow Corp, uma organização notória envolvida em espionagem cibernética encoberta. Corre o boato de que eles protegeram um endpoint protegido que apenas insiders confiáveis podem acessar. No entanto, há sussurros de que com as técnicas certas, você pode enganar o sistema para revelar esse endpoint oculto e expor os segredos da Shadow Corp.
Sua tarefa: acessar o endpoint protegido e recuperar a bandeira oculta!
Este CTF pode ser executado localmente, e você precisará instalar e configurar a aplicação web.
docker compose é necessário para executar esta aplicação curl é recomendado para consultar e testar endpoints.
Clone o repositório e navegue até o diretório do projeto:
cd traefik-CVE-2024-45410-poc
Execute o CTF
docker compose up
Seu objetivo principal é acessar o endpoint /protected e recuperar a bandeira secreta. No entanto, você notará que o acesso direto é bloqueado a menos que certas condições sejam atendidas. O sistema verifica fontes confiáveis validando o cabeçalho X-Forwarded-Host.
A aplicação foi projetada para permitir acesso apenas a partir de localhost (127.0.0.1). No entanto, se você inspecionar os cabeçalhos HTTP cuidadosamente, pode descobrir uma maneira de "enganar" o servidor fazendo-o acreditar que você é uma fonte confiável. Investigue os cabeçalhos de proxy HTTP e como eles podem ser manipulados.
Você já explorou cabeçalhos hop-by-hop? Esses cabeçalhos são comumente usados por proxies para controlar ou modificar o comportamento de requisições encaminhadas. Ao manipular corretamente esses cabeçalhos, você pode conseguir convencer o servidor de que está vindo de um local confiável, mesmo que não esteja.
O cabeçalho Connection pode ser um divisor de águas. E se você pudesse introduzir um cabeçalho que o sistema implicitamente confia? Explore como modificar os cabeçalhos da requisição para incluir X-Forwarded-Host de uma forma que o servidor não espera.
Comando de Exemplo (Não Solução) Aqui está um exemplo de como começar a experimentar com curl:
curl -i http://localhost:5000/protected
Isso mostrará que o acesso é negado por padrão.
Em alguns sistemas, certos cabeçalhos são considerados hop-by-hop, significando que controlam o comportamento de cada intermediário em uma cadeia de requisições HTTP. Esses cabeçalhos são removidos ou alterados por proxies. No entanto, se você manipular habilmente os cabeçalhos e especificar o cabeçalho hop-by-hop correto, pode encontrar uma maneira de contornar certos mecanismos de segurança. Concentre-se em como o cabeçalho Connection funciona e como você pode influenciar outros cabeçalhos que normalmente não são encaminhados além de um único salto. Isso pode ajudá-lo a enganar o servidor fazendo-o pensar que você é um cliente confiável.
Comece a pensar em como ajustar sua requisição para obter acesso. A resposta está em como a aplicação lida com cabeçalhos de host confiáveis. Lembre-se, manipular cabeçalhos pode ser a chave para resolver este CTF.