
Una colección exhaustiva de 12 desafíos de explotación web contenerizados que cubren CVE-2023-25690, bypasses de WebAuthn, contrabando HTTP/3 y cadenas avanzadas de XSS/RCE.
"Viajo no por caminos establecidos, sino que salto libremente a través del vacío. Si me empaquetas mal, entregaré un secreto en la puerta equivocada."
El desafío presenta una aplicación HTTP/3 (QUIC) sobre UDP. Debido a que UDP no tiene estado y el proxy no aplica límites estrictos de solicitudes HTTP como TCP, es posible desincronizar el proxy y el servidor backend. Un atacante puede colar una solicitud HTTP oculta dentro de otra solicitud.
Notas: la longitud máxima del mensaje es de 1024 bytes, solo las solicitudes GET funcionarán realmente, y los mensajes se descartan después de 10 segundos
Objetivo: byuctf.xyz:40011
En esta implementación específica, un middleware de Python (udp_server.py) escucha en el puerto 40000 el texto entrante. Este servidor reenvía las solicitudes al servidor web real una vez que se encuentra un \r\n\r\n. Debido a que esto es UDP, hay una alta probabilidad de que los paquetes lleguen parcialmente, lo que provoca desincronización si se envían varias solicitudes rápidamente o si se manipulan los límites de los paquetes.
Para resolver este desafío, debes tener en cuenta la naturaleza no confiable de UDP y la forma específica en que el middleware maneja los límites de las solicitudes.
/ revela una pista sobre la inestabilidad de la conexión Nether./endpoints.txt para encontrar una lista de 200 posibles endpoints ocultos.solve.py) para enviar solicitudes HTTP crudas sobre UDP al objetivo. El script debe iterar sobre los endpoints y solicitar repetidamente cada uno hasta que se reciba una respuesta completa (que contenga un cuerpo).CH4KR4X2{P0D5_bl0ckch41n_br34ch}
Este desafío ejecuta un servidor Flask en el puerto 1337 y udp_server.py en el puerto 40000.
Build:
sudo docker build -t huup .
sudo docker network create -d bridge huup
Run:
sudo docker run -p 40011:40000/udp --detach --name huup --network huup huup:latest