¿Inyección de SQL ciego y dependencia de la versión HTTP?

5

Hace poco me encontré con una máquina virtual que tiene inyección de Blind SQL en el encabezado X-Forwarded-For.

Utilicé sleep () para detectar la vulnerabilidad.
La carga útil funcionó en HTTP / 1.0 y no en HTTP / 1.1.

PAYLOAD:

GET / HTTP/1.x
X-Forwarded-For: hacker' OR sleep(5) AND '1'='1 --+
Connection: close

RESULTADO:

  • Para HTTP / 1.1: inmediatamente obtengo 400 solicitudes incorrectas
  • Para HTTP / 1.0: obtengo 200 OK después de 5 segundos

    Usé Burp Repeater para crear el paquete.

VM-Link: enlace

¿Puede alguien ayudarme a entender el problema aquí?
Gracias.

    
pregunta Wisam Ahmed 02.06.2018 - 19:39
fuente

1 respuesta

4
  

La carga útil funcionó en HTTP / 1.0 y no en HTTP / 1.1.

TL; DR: funcionó en HTTP / 1.0, falló con una solicitud HTTP / 1.1 no válida pero tuvo éxito con una solicitud HTTP / 1.1 válida.

Eche un vistazo a la solicitud que se envió:

GET / HTTP/1.x
X-Forwarded-For: hacker' OR sleep(5) AND '1'='1 --+
Connection: close

Si bien HTTP / 1.0 y HTTP / 1.1 tienen el mismo aspecto, hay algunas diferencias importantes. Uno es que HTTP / 1.1 requiere que el cliente envíe un encabezado Host en la solicitud, es decir, algo como Host: www.example.com . Si bien este encabezado era posible y se usaba ampliamente con HTTP / 1.0, tampoco era obligatorio en HTTP / 1.0, pero sí en HTTP / 1.1. Esto significa que la solicitud que envía no es válida con HTTP / 1.1, lo que explica la respuesta que recibe del servidor:

  

Para HTTP / 1.1: Inmediatamente recibo 400 solicitudes incorrectas

Esta respuesta inmediata del servidor significa que la solicitud se rechazó y no se reenvió a la aplicación web vulnerable. La solicitud HTTP / 1.0 bien formada, en cambio, no fue rechazada y resultó en una explotación exitosa:

  

Para HTTP / 1.0: obtengo 200 OK después de 5 segundos

Después de que se solucionó la solicitud HTTP / 1.1, el exploit también funcionó allí:

  

Una vez agregué Host Header. SQLi también trabajó con 1.1.

    
respondido por el Steffen Ullrich 02.06.2018 - 21:25
fuente

Lea otras preguntas en las etiquetas