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?