Condiciones de carrera y contrabando HTTP
Condiciones de carrera / Contrabando HTTP ofrece dos herramientas especializadas para ataques HTTP sensibles a los tiempos y a nivel de protocolo.
Condiciones de carrera
La pestaña Condiciones de carrera envía varias copias de una solicitud simultáneamente al mismo endpoint y permite comparar las respuestas y los tiempos de las ejecuciones en paralelo.
Cuándo usarla
- TOCTOU (tiempo de comprobación/tiempo de uso): prueba si las solicitudes concurrentes pueden intercalarse entre una comprobación y una operación de cambio de estado.
- Manipulación de cuentas: envía cambios de saldo, canjes de cupones u operaciones con límites de manera concurrente para comprobar si se produce doble gasto o un exceso de canjes.
- Elusión de límites de votos o de tasa: confirma si los límites por usuario se aplican de forma atómica.
Ejecución de una prueba de condiciones de carrera
- Crea la solicitud objetivo en la pestaña Condiciones de carrera o envíala a ella.
- Establece el valor de concurrencia: cuántas copias se enviarán en paralelo.
- Haz clic en Enviar prueba de carrera. Todas las copias se envían lo más simultáneamente posible.
- Revisa la tabla de respuestas: código de estado, cuerpo y tiempo transcurrido para cada copia.
- Las diferencias entre respuestas (distintos códigos de estado, distintos cuerpos de respuesta, éxito inesperado en las copias 2+) indican una ventana de carrera.
Condiciones de carrera con un único paquete HTTP/2
Cuando el objetivo admita HTTP/2, activa el modo HTTP/2. HTTP/2 multiplexa todas las solicitudes en paralelo sobre una conexión, lo que elimina la variación de los tiempos de red y hace más fiable su llegada concurrente al servidor.
Contrabando de solicitudes HTTP
La pestaña Contrabando HTTP prueba cómo gestiona un servidor las cabeceras ambiguas Content-Length y Transfer-Encoding para detectar desincronización entre el frontend y el backend.
Contexto
Cuando un proxy inverso y un servidor backend discrepan sobre dónde termina una solicitud y empieza la siguiente, un prefijo introducido mediante contrabando desde la solicitud A puede anteponerse a la solicitud B. El impacto abarca desde el envenenamiento de caché hasta la elusión de autenticación y la inyección de solicitudes arbitrarias.
Variantes de desincronización
| Variante | Descripción |
|---|---|
| CL.TE | El frontend usa Content-Length; el backend usa Transfer-Encoding |
| TE.CL | El frontend usa Transfer-Encoding; el backend usa Content-Length |
| TE.TE | Ambos usan Transfer-Encoding, pero responden de manera distinta a una cabecera ofuscada |
Ejecución de un sondeo de contrabando de solicitudes
- Selecciona el endpoint objetivo en la pestaña Contrabando HTTP.
- Elige la variante de desincronización que quieras probar.
- Haz clic en Enviar sondeo. La herramienta envía la solicitud preparada y mide la respuesta.
- Un tiempo de espera agotado o una respuesta inesperada en la segunda solicitud de la secuencia indica una posible desincronización.
- Confírmalo manualmente antes de crear un hallazgo; se producen falsos positivos cuando las condiciones de red provocan un tiempo de espera agotado que no está relacionado con el sondeo.