CSRF de alto nivel

-1

He estado haciendo un poco de dvwa (aplicación web muy vulnerable) y tengo una pregunta sobre CSRF.

Hay un parámetro adicional, un token csrf, que se envía en la solicitud de obtención. Todas las respuestas que vi en la web utilizan xss para activar el cambio de contraseña.

Pensé en una forma diferente y me preguntaba si mi respuesta era correcta.

Básicamente, lo que hago es crear un script php en el sitio web del atacante que solicita la página dvwa csrf, recopila el user_token emitido a la página del atacante y luego usa ese token para enviar más la contraseña, new_password y user_token.

Intenté hacer esto (solicito dos páginas y uso el token de usuario de una página en otra)

    
pregunta Vipul Nair 08.11.2018 - 18:40
fuente

2 respuestas

2

Uno de los requisitos críticos de una protección CSRF implementada correctamente es que el token anti-CSRF debe ser único para cada usuario. El servidor web del atacante puede obtener un token del sitio vulnerable, pero no (bueno, no debería) ser el token de la víctima. Si el sitio emite el mismo token anti-CSRF para todos los usuarios, entonces el sitio es vulnerable a CSRF; simplemente vaya a recuperar el token anti-CSRF usando su propia cuenta de usuario y utilícelo para atacar a otros usuarios.

Hacer este lado del cliente (el sitio web del atacante, en lugar del servidor web, recupera el token) no funcionará debido a la política del mismo origen (a menos que el sitio vulnerable también tenga una configuración CORS extremadamente insegura, que es una toda la vulnerabilidad diferente). El atacante puede hacer que el navegador de la víctima solicite una página en el sitio de destino, pero el sitio del atacante no puede ver cuál es la respuesta, por lo que no podrá descubrir el token anti-CSRF de la víctima de esa manera. Si esto le sorprende, lea la política sobre el mismo origen; Es una de las protecciones más importantes que ofrece un navegador web (sin ella, nunca podría iniciar sesión en un sitio y navegar por otro).

    
respondido por el CBHacking 08.11.2018 - 21:33
fuente
-1

Por lo general, se supone que un token CSRF debe generarse en el lado del cliente en el Javascript para que las pestañas de su navegador queden separadas unas de otras y utilicen tokens diferentes aunque esté en la misma máquina. Esto significa que el servidor nunca entrega tokens CSRF que pueda solicitar.

    
respondido por el Nosajimiki 08.11.2018 - 20:16
fuente

Lea otras preguntas en las etiquetas