Reenvía una solicitud de reserva después de cerrar sesión

CiberseguridadBeginner
Practicar Ahora

Introducción

Los miembros de Fieldwork Studio pueden consultar un taller reservado y descargar la confirmación de su reserva. El equipo ha añadido Sign out this browser. Volver a la página de inicio de sesión parece convincente, pero no demuestra si una sesión capturada previamente sigue funcionando.

Utilizarás Burp Suite Community Edition de Kali como proxy HTTP y Repeater, conservarás las solicitudes originales y probarás ambos recursos protegidos después de cerrar sesión. Tu entrega consiste en evidencias privadas de solicitud/respuesta y una breve decisión de aceptación sin contraseñas. Evalúas la aplicación; no reparas su servidor.

Solo se presupone que sabes introducir comandos básicos en la terminal y cambiar de pestaña. El laboratorio presenta las respuestas HTTP, las cookies y los controles de Burp. Todas las identidades y reservas son sintéticas, y el entorno suministrado está aislado. Utiliza únicamente la cuenta suministrada y el objetivo del curso. Calcula unos 65 minutos, incluida la lectura y los errores habituales; es una estimación del autor, no una medición de una prueba con principiantes.

Establece una reserva real de miembro

En este paso establecerás el uso normal antes de probar el cierre de sesión. Abre Auditor, la terminal Kali. Se inicia en /home/labex/project. cat muestra un archivo de texto. Lee la autorización, la identidad y la dirección del servicio suministradas:

cat scope.json

La URL base es http://members.test:8080/autumn. Utiliza el nombre de usuario morgan y la contraseña PaperDay!47. El miembro asignado es Morgan Reed, con el asiento P12 de Printmaking. El signo de exclamación forma parte de la contraseña; introdúcelo en el formulario del navegador. No pruebes otras identidades ni sitios externos, y no modifiques los datos, el código ni los procesos del objetivo.

Si un espacio de trabajo gráfico muestra Disconnected, haz clic en su botón Reconnect de la parte superior. Esto vuelve a conectar la ventana existente y conserva sus cookies del navegador, las solicitudes de Burp y el progreso del objetivo.

Abre Burp. Burp Community ya está instalado. En su asistente de inicio, mantén seleccionado Temporary project y haz clic en Next. Mantén seleccionado Use Burp defaults y haz clic en Start Burp. Si aparece Burp Suite is out of date, haz clic en OK para continuar con la versión preparada para la formación. Espera a que aparezca la ventana principal. Un proyecto temporal conserva el espacio de trabajo activo en memoria; este curso utiliza exportaciones XML explícitas para los archivos de evidencias, en lugar de una función de proyecto en disco de pago.

Burp es un proxy: los navegadores preparados envían sus solicitudes HTTP a través de él para que puedas inspeccionar la conversación real. En Burp, elige la pestaña principal Proxy y la subpestaña Intercept. El botón debe indicar Intercept is off. Si indica Intercept is on, haz clic una vez. La interceptación detendría las solicitudes; quieres que fluyan normalmente mientras se registra el historial.

Cambia a la pestaña Browser A de LabEx. Es un navegador Chromium preparado dentro del mismo contenedor de auditoría que Burp. Haz clic en su barra de direcciones, introduce la siguiente URL y pulsa Enter:

http://members.test:8080/autumn/

Lee la página pública de talleres y elige View my booking. Rellena Username y Password con las credenciales suministradas y haz clic en Sign in. Si Chromium ofrece guardar la contraseña, elige Never. Deberías llegar a Your next day of making, donde aparecen Morgan Reed, Printmaking y el asiento P12.

Haz clic en Download booking. El archivo real fieldwork-booking.csv contiene el miembro, el taller y el asiento. La barra de descargas de Chromium de la parte inferior muestra el archivo descargado; Show all abre su lista de descargas. Consultar los talleres públicos, ver tu reserva y realizar esta descarga son las funciones normales que conservarás.

La reserva confirmada de Printmaking de Morgan Reed con la acción Download booking

Comprueba el miembro, el taller y el asiento en la tarjeta de reserva antes de descargarla.

Una contraseña incorrecta produce Sign-in unsuccessful, con un enlace try again. Sigue ese enlace y vuelve a introducir los valores suministrados. Una respuesta Page not found significa que la ruta es incorrecta; vuelve a la URL base exacta de arriba. Un error de conexión del navegador significa que no se obtuvo ninguna respuesta de la aplicación: comprueba la URL, termina el asistente de Burp y asegúrate de que la interceptación esté desactivada. No trates un fallo de conexión como un rechazo de seguridad.

Browser B es un perfil de navegador independiente para el siguiente laboratorio; déjalo sin usar aquí. Las dos pestañas de navegador y Burp son ventanas de un mismo contenedor de auditoría, no máquinas virtuales independientes. Cambiar de pestaña de LabEx no restablece el objetivo ni tu trabajo.

Conserva las solicitudes originales en Repeater

En este paso conservarás solicitudes que ya han funcionado. Cambia a Burp, selecciona Proxy y después HTTP history. Busca la solicitud GET a /autumn/account en members.test:8080. Una solicitud es lo que envía el navegador; una respuesta es lo que devuelve el servidor. GET lee un recurso. HTTP 200 OK significa que esta solicitud recibió una respuesta correcta.

Haz clic en la fila de la cuenta. En su editor de solicitudes, elige Raw y localiza la cabecera Cookie. Al iniciar sesión se emitió una cookie de sesión llamada studio_session: el navegador envía este valor para identificar su sesión autenticada. Poseer la cookie antigua es la condición que estás probando. Borrar una cookie del navegador y probar una solicitud nueva sin cookie respondería a una pregunta distinta.

Haz clic derecho en la fila de la cuenta y elige Send to Repeater. Repeater te permite volver a enviar una solicitud conservada e inspeccionar la respuesta nueva. Después busca la solicitud GET a /autumn/booking.csv, haz clic derecho en ella y elige Send to Repeater. Si un filtro del historial oculta la solicitud CSV, haz clic en la barra de filtros situada encima de la tabla y activa Show all; cierra después el diálogo de filtros y vuelve a buscar la ruta exacta. Utiliza el host y la ruta, no solo la posición de la fila.

Elige la pestaña principal Repeater. La primera pestaña numerada de solicitudes, 1, corresponde a la solicitud de la cuenta; 2 corresponde a la reserva, según el orden en que las enviaste. En 1, confirma que el objetivo es http://members.test:8080, que la línea de solicitud indica GET /autumn/account HTTP/1.1 y que la cookie original studio_session sigue presente. Haz clic en Send. En el panel de respuesta, elige Raw para leer HTTP/1.0 200 OK y el contenido de la página de reserva.

Selecciona 2 y haz clic en Send. Espera 200 OK, un tipo de contenido text/csv y las filas reales de la reserva. La versión HTTP del servidor puede diferir de la de la solicitud; las observaciones relevantes son el estado y el contenido real de la reserva del miembro.

Ambas solicitudes conservadas deben utilizar la misma cookie de sesión. Compara los valores en Burp sin copiarlos en un informe. Mantén estas dos solicitudes de Repeater sin cambios durante todo el cierre de sesión: no elimines ni sustituyas sus cookies, no sustituyas el objetivo ni envíes una solicitud de cierre de sesión desde estas pestañas. Su referencia inicial correcta da sentido a la comparación posterior.

Si enviaste la fila incorrecta del historial, cierra solo esa pestaña de solicitud de Repeater y envía la fila correcta. Identifica la solicitud correcta por su ruta; los números de pestaña pueden ser distintos después. Cerrar una pestaña de solicitud es distinto de cerrar Burp o restablecer la VM.

En este paso distinguirás entre el cierre de sesión visible del navegador y la invalidación de la sesión en el servidor. Cambia a Browser A. En la página de reserva, haz clic en Sign out this browser. El navegador vuelve a Welcome back, la página de inicio de sesión.

Este cambio de página por sí solo no demuestra que el servidor haya dejado de aceptar la cookie antigua. Cambia a Burp, abre Repeater, selecciona tu solicitud original de la cuenta y vuelve a hacer clic en Send. Mantén su cookie sin cambios. Espera 200 OK y el contenido de la reserva de Morgan Reed. La sesión antigua sigue permitiendo el acceso a la cuenta después de cerrar sesión.

Selecciona tu solicitud original de reserva y vuelve a hacer clic en Send. Espera 200 OK, text/csv y la fila de reserva del mismo miembro. Se trata de una respuesta real de descarga correcta obtenida con la cookie antigua; una página del navegador que aparente éxito o un HTTP 200 que contenga solo un formulario de inicio de sesión no lo demostrarían.

Para un cierre de sesión funcional del navegador actual, ambas solicitudes protegidas conservadas deberían recibir en su lugar 401 Unauthorized, lo que significa que la aplicación rechaza esa sesión. Aquí, el servidor sigue aceptándola en ambos recursos. Rechaza el cambio de cierre de sesión basándote en la evidencia que has observado. Has demostrado este fallo concreto de sesión, no todas las debilidades posibles de la aplicación.

Confirma que el uso habitual sigue siendo posible. Cambia a Browser A, vuelve a iniciar sesión con morgan y PaperDay!47, consulta la reserva y haz clic en Download booking. Esto emite una sesión nueva y mantiene en funcionamiento el flujo normal del miembro. Vuelve a Burp sin sustituir las cookies de tus dos solicitudes originales de Repeater. Sus respuestas más recientes deben seguir siendo las respuestas posteriores al cierre de sesión que exportarás a continuación.

La solicitud original de reserva sigue devolviendo el CSV de Morgan Reed después de cerrar sesión

Compara la Cookie sin cambios del panel Request izquierdo con 200 OK y la fila real del miembro del panel Response derecho. Un estado correcto por sí solo no demostraría acceso a esta reserva.

Si sobrescribes accidentalmente una cookie original o cierras ambas solicitudes conservadas, repite una prueba completa: captura una sesión nueva correcta en ambos recursos, conserva sus solicitudes, cierra esa sesión y vuelve a enviar después esas solicitudes exactas. Una cookie de inicio de sesión nuevo no sustituye a la cookie de la sesión que cerraste.

Entrega evidencias privadas y una decisión clara

En este paso guardarás las evidencias HTTP reales sin incluir credenciales en la evaluación. Cambia a Auditor. Las evidencias de solicitud/respuesta contienen una cookie de sesión utilizable, así que restringe el acceso antes de guardarlas.

umask 077 hace que los archivos y directorios nuevos sean privados para tu usuario. Se aplica a esta sesión de terminal, no a todos los shells futuros. mkdir -p crea el directorio indicado si hace falta. chmod 700 concede a su propietario permisos de lectura, escritura y acceso a las entradas del directorio, sin acceso para el grupo ni para otros usuarios.

umask 077
mkdir -p evidence
chmod 700 evidence

Cambia a Burp y selecciona la solicitud original de la cuenta en Repeater. Confirma que su respuesta actual es la página de reserva 200 OK posterior al cierre de sesión. Haz clic derecho dentro del editor Request y elige Save item. Esto guarda la solicitud y la respuesta juntas; Copy to file guardaría material distinto.

En el diálogo Select a file, introduce esta ruta absoluta en File Name:

/home/labex/project/evidence/account-after.xml

Diálogo Save item con la ruta absoluta de las evidencias de cuenta y la opción Base64 marcada

Utiliza el campo File Name situado cerca de la parte inferior; la opción Base64 marcada está debajo.

Deja marcada Base64-encode requests and responses y haz clic en Save. Base64 representa de forma segura los bytes originales dentro de XML; no cifra la cookie. Cierra cualquier aviso de éxito con OK si aparece. Repite Save item para la solicitud original de reserva, utilizando:

/home/labex/project/evidence/booking-after.xml

Cambia a Auditor. chmod 600 permite que solo el propietario lea y escriba cada archivo. ls -l muestra los permisos; espera -rw------- para ambos archivos XML.

chmod 600 evidence/account-after.xml evidence/booking-after.xml
ls -l evidence

Escribe la evaluación sin contraseñas de abajo. > sustituye el archivo indicado. <<'JSON' inicia un here-document: el shell copia literalmente las líneas siguientes hasta el JSON de cierre en su propia línea. Los valores numéricos de estado no llevan comillas; true de JSON es un valor booleano. Mantén las cookies, las contraseñas y las solicitudes sin procesar fuera de este informe.

cat > assessment.json <<'JSON'
{
  "decision": "reject",
  "account_after_logout": 200,
  "booking_after_logout": 200,
  "fresh_sign_in_works": true
}
JSON

Lee tu evaluación para detectar errores habituales de escritura:

cat assessment.json

Tu entrega consiste en los dos elementos XML privados y esta evaluación. Los elementos conservan las solicitudes con la cookie original y sus respuestas reales; el informe comunica la decisión respaldada sin repetir secretos. La verificación comprueba estas relaciones con los hechos existentes del servidor. No crea por ti inicios de sesión, cierres de sesión ni tráfico de reenvío que falten, y deja tus archivos sin cambios. Su solicitud habitual de conservación de la página pública puede añadir un registro de acceso.

Si un nombre de archivo es incorrecto, repite Save item en la ruta absoluta indicada y vuelve a aplicar chmod 600. Si cambiaste de directorio, pwd muestra el directorio actual y cd /home/labex/project te devuelve al espacio de trabajo. No sustituyas evidencias ausentes por una línea de éxito escrita a mano o una captura de pantalla.

Resumen

Has establecido una referencia inicial de reserva real, conservado dos solicitudes con la cookie original en Burp Repeater, cerrado sesión y demostrado que el servidor seguía aceptando ambas solicitudes. Que el navegador volviera a su página de inicio de sesión no demostraba la invalidación de la sesión. Has conservado el flujo normal y entregado evidencias HTTP privadas con una decisión de rechazo sin contraseñas.

El siguiente laboratorio examina un despliegue corregido. Un navegador independiente ayudará a distinguir entre finalizar la sesión actual y finalizar innecesariamente todas las sesiones del mismo miembro.