lab-net-proxy — ver y modificar HTTP desde el medio =================================================== ESTADO: LABORATORIO LOCAL Target: http://localhost:8092 Autorizacion: sistema local creado por ti para entrenamiento. Interceptar trafico ajeno no es una tecnica de estudio: es un delito. Aqui interceptas el tuyo, entre dos contenedores tuyos, y por eso puedes hacerlo sin pedirle permiso a nadie. Lo usa la leccion f02-http. Que levanta ----------- intermediario nginx como proxy inverso, 127.0.0.1:8092 app aplicacion objetivo, sin puerto publicado cliente alpine con curl, dig, nc, socat y tcpdump Dos redes: prx_borde tiene salida; solo la toca el intermediario prx_interna internal: true, SIN salida a internet Comandos -------- docker compose up -d --build levantar docker compose exec cliente sh entrar al puesto de trabajo docker compose logs -f intermediario ver lo que registra el que esta en medio docker compose down -v destruir todo Abre despues: http://localhost:8092 Rutas de la app --------------- / pagina estatica /eco devuelve, en texto plano, lo que la app cree haber recibido /login emite una cookie de sesion deliberadamente floja /saldo texto que el intermediario reescribe al vuelo /salud comprobacion de vida Y en el intermediario: /directo/... reenvia sin tocar nada /... reenvia INVENTANDO la cabecera X-Rol: administrador y reescribiendo la respuesta Recorrido de la leccion ----------------------- # 1. la app vista de frente, sin intermediario docker compose exec cliente curl -s http://app/eco # 2. la misma peticion a traves del intermediario curl -s http://localhost:8092/eco # 3. compara las dos salidas: el intermediario ha anadido # X-Rol y X-Forwarded-For que tu nunca enviaste curl -s http://localhost:8092/directo/eco # 4. lo que el intermediario ve de ti (cookie incluida) curl -s -c galletas.txt http://localhost:8092/login curl -s -b galletas.txt http://localhost:8092/eco docker compose logs --tail 5 intermediario # 5. modificacion de la respuesta, no solo de la peticion curl -s http://localhost:8092/saldo curl -s http://localhost:8092/directo/saldo # 6. metodos que no son GET curl -s -X POST -d "a=1" http://localhost:8092/eco curl -s -X OPTIONS -i http://localhost:8092/eco | head -3 Si algo falla ------------- "port is already allocated" otro proceso usa el 8092; cambia el mapeo a 127.0.0.1:8095:8080 /eco devuelve vacio en un la cabecera no viajo; comprueba que campo la escribiste con -H sub_filter no reescribe la respuesta llego comprimida; anade proxy_set_header Accept-Encoding "" Cuando termines, siempre: docker compose down -v