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?