
Uma coleção abrangente de 12 desafios de exploração web em contêineres cobrindo CVE-2023-25690, bypasses de WebAuthn, smuggling HTTP/3 e cadeias avançadas de XSS/RCE
"Não viajo por estradas estabelecidas, mas salto livremente pelo vazio. Empacote-me errado e entregarei um segredo na porta errada."
O desafio apresenta uma aplicação HTTP/3 (QUIC) sobre UDP. Como o UDP não tem estado e o proxy não impõe limites rígidos de requisições HTTP como o TCP, é possível dessincronizar o proxy e o servidor backend. Um atacante pode contrabandear uma requisição HTTP oculta dentro de outra requisição.
Notas - o tamanho máximo da mensagem é 1024 bytes, apenas requisições GET funcionarão de fato, e as mensagens são descartadas após 10 segundos
Alvo: byuctf.xyz:40011
Nesta implementação específica, um middleware Python (udp_server.py) escuta na porta 40000 por texto de entrada. Este servidor encaminha requisições assim que um \r\n\r\n é encontrado para o servidor web real. Como é UDP, há uma alta chance de entrega parcial de pacotes, levando à dessincronização se múltiplas requisições são enviadas rapidamente ou se os limites dos pacotes são manipulados.
Para resolver este desafio, você deve levar em conta a natureza não confiável do UDP e a forma específica como o middleware lida com os limites das requisições.
/ revela uma dica sobre a instabilidade da conexão do Nether./endpoints.txt para encontrar uma lista de 200 possíveis endpoints ocultos.solve.py) para enviar requisições HTTP brutas sobre UDP para o alvo. O script deve iterar pelos endpoints e solicitar cada um repetidamente até que uma resposta completa (contendo um corpo) seja recebida.CH4KR4X2{P0D5_bl0ckch41n_br34ch}
Este desafio executa um servidor Flask na porta 1337 e udp_server.py na porta 40000.
Build:
sudo docker build -t huup .
sudo docker network create -d bridge huup
Executar:
sudo docker run -p 40011:40000/udp --detach --name huup --network huup huup:latest