¿Por qué no hay ningún referente cuando se apunta a una página segura?

2

Participo en un programa de recompensas de errores y trato de encontrar una vulnerabilidad grave para exponer.

En primer lugar, descubrí que la empresa no estaba usando CSRF token , en lugar de eso, usan Referer para garantizar que la solicitud se realice desde https://example.com .

Referer tiende a ser menos seguro que CSRF token , por eso empecé a buscar Vulnerabilidad de URL abierta . Después de unas horas de búsqueda, finalmente encontré una. Una entrada como https://m.example.com/?app=desktop&location=/admin?doSomeAction=stuff dará como resultado el siguiente encabezado de ubicación: Location:https://example.com/admin?doSomeAction=stuff .

Leyendo Wikipedia sobre Referer y https , noté la siguiente línea:

  

Si se accede a un sitio web desde una conexión HTTP segura (HTTPS) y un enlace apunta a cualquier lugar excepto a otra ubicación segura , no se envía el campo de referencia.

Al estar siendo redirigido a una ubicación segura, ¿por qué no se envía el encabezado Referer al acceder a Location:https://example.com/admin?doSomeAction=stuff

Editar: el navegador no cambia Referer en la redirección de Location . Me confundí debido a esta publicación: enlace . Ahora me pregunto, si en lugar de Location , la página enviara contenido con <script>document.location="https://example.com/example.com/admin?doSomeAction=stuff"</script> ¿cambiaría el referente?

    
pregunta Xavier59 02.09.2016 - 14:03
fuente

1 respuesta

2

En realidad, el referente HTTP no es un encabezado obligatorio. El cliente puede decidir dejarlo en blanco o enviar información falsa. Noté que Google Chrome no siempre envía el remitente, y cuando se trata de HTTP - > Enlaces HTTPS, no se envía nada para las primeras solicitudes. Mi mejor suposición sería decir que el navegador se asegura de que todas las solicitudes se hayan solicitado al menos una vez a través de HTTPS, antes de que se agregue el referente. Otras opciones de esta publicación:

Estará / puede estar vacío cuando el usuario final:

  • ingresó la URL del sitio en la barra de direcciones del navegador.
  • visitó el sitio con un marcador mantenido por el navegador.
  • visitó el sitio como primera página en la ventana / pestaña.
  • cambió de una URL https a una URL http.
  • cambió de una URL https a una URL https diferente. (Algunos navegadores)
  • tiene instalado un software de seguridad (antivirus / firewall / etc) que elimina la referencia de todas las solicitudes.
  • está detrás de un proxy que elimina la referencia de todas las solicitudes.
  • visitó el sitio mediante programación (como, curl ) sin configurar el encabezado de referencia (¡searchbots!).

Actualizar en comentario

Sí, espero que cambie. Para un navegador, no importa quién activó la ubicación, usted, un script o un complemento, pero nuevamente, lea lo anterior.

    
respondido por el Yorick de Wid 02.09.2016 - 14:44
fuente

Lea otras preguntas en las etiquetas