FAILLO CSRF, explicaciones y contramedidas.

«Me conecto como siempre a mi blog, decido escribir un nuevo post impresionante en Harry Potter. Mientras tanto, camino en otros sitios y cuando vuelvo a mi blog, horror, ni post. Todos los artículos previamente escritos se borran y absolutamente no entiendo lo que sucedió. ¡No he tocado nada! «

Esta historia podría ser el resultado de una operación exitosa de la falla CSRF, muy fácil de configurar y muy formidable.

qué ¿La falla del CSRF?

El nombre CSRF proviene de la falsificación de la solicitud de la pantalla cruzada que, si intentamos dar una definición en francés, significa falsificación de interferencias (s. No estamos más avanzados, lo sé.

De hecho, se trata de realizar una acción para un sitio o página específico usando el usuario como un gatillo, sin él en Asware.

nosotros Adivinará un enlace que generalmente recibe un usuario, y simplemente asegúrese de que se haga clic en este enlace.

¡un ejemplo?

Al llevar nuevamente la historia de arriba, podemos imaginar que en Un blog dado, el enlace de eliminación de un artículo es el siguiente:

 http://www.monblog.fr/del.php?id=1 

aquí, id = 1 significa que queremos eliminar el artículo cuyo identificador es 1, normalmente es actos del primer artículo.

Si ahora un visitante no está conectado a la página de administración, haga clic en tal página. Enlace, tendrá un mensaje del tipo:

No tiene los derechos para eliminar este artículo, inicie sesión e intente nuevamente.

normal, cualquier visitante no tiene derecho a editar o eliminar elementos De un blog que no le pertenece.

Pero si ahora el visitante conoce este enlace, es suficiente para que le envíe el enlace al administrador asegurándose de que este último clic.

¿Qué sucede después de que el administrador hace clic?

El enlace de eliminación se ejecuta correctamente porque el administrador está bien conectado y, por lo tanto, su artículo se suprime.

Si desea ver un ejemplo real, diríjase en el escenario de la situación de la falla CSRF.

¿Cómo proteger contra la falla CSRF?

generalmente, Si está utilizando un sistema de administración de contenido (CMS) del tipo de WordPress o Joomla, que es un mínimo protegido, no tiene mucho que ver. Finalmente… casi.

Si, a la inversa, use un sistema antiguo o lo ha programado, este riesgo está presente.

Para proteger contra la falla CSRF, 2 principios complementarios Generalmente se usan:

Autenticación de token

Un token (también llamado token en inglés) es un número o una cadena aleatoria que se probará antes de cualquier modificación o edición de un artículo.

Generalmente se presenta en la forma de hash MD5 así:

 b6cf20590A57f468590A57f46859bdc6c53d12ff8 

Este token debe crearse en un archivo PHP que se llamará en todas las páginas. Normalmente, es un archivo de config.php o functions.php.

A menudo generamos un «número aleatorio» con funciones usando la hora en PHP. Por ejemplo, se puede generar un token con:

 MD5 (UNIQID (MT_RAND (), VERDADERO); 

La función UNIQID () genera un identificador único basado en el tiempo en los microsegundos. Sin embargo, PHP no recomienda esta función porque no genera canales que no pueden decapitarse de antemano.

Entonces, usaremos:

 MD5 (bin2hex (openssl_random_seudo_bytes (6)); 

que es esta vez altamente seguro.

La función OpenSSL_RANDOM_SEUDO_BYTES () Genera una cadena pseudo-aleatoria de bytes de tamaño 6 bits * 2 de lo que se convierte entonces en hexadecimal, 6 ser El número dado en el parámetro de la función (uno puede cambiarlo).

Entonces, en un archivo PHP global, escribiremos el siguiente código:

? PHPIF (! ISSET ( $ _ session ['token'])) {$ _session ['token'] = bin2hex (openssl_random_seudo_bytes (6));}? 

Este código significa: Si la sesión token n no está definida aún, se genera y registra aleatoriamente para la sesión actual.

Luego, cada conexión de un usuario, tendremos que generar un chip que esté limpio.

para esto, uno puede Antes de que cada conexión regenere el token, eliminando el chorro. En la sesión anterior:

 designe ($ _ session ['token']; 

Se modifica dinámicamente los enlaces de eliminación, digamos que se escribió el enlace anterior. La forma:

 a href = "http://www.monblog.fr/del.php?id=? echo get_article_id (); ? Eliminar artículo / a 

Se reemplaza por:

 a href = "http://www.monblog.fr/del.php?id=? Echo get_article_id (). "token =". $ _session ['token']; eliminar el artículo / a 

La URL de eliminación se mostrará como este:

 http: //www.monblog.fr /del.php?id=1Jeton=B6CF20590A57F4685c9bdc6c53d12ff8 "/ pre>" pre>: 

 http://www.moblog.fr/ del.php? ID = 1 

y Finalmente, en nuestro archivo DELETE DEL.PHP, nos aseguraremos de que haya un token y este token sea válido. El archivo, antes de cualquier modificación presentada así:

? PHPIF (ISSET ($ _ '])) {Delete_Article ($ _ Obtén [']);} else {Die ("No hay identificaciones de artículo seleccionado");}? 

Entonces, se convierte en:

? PHPIF (ISSET ($ _ obtenga [']) isset ($ _ obtenga [' token ']) ($ _get [' token '] == $ _session [' token '])) {eliminar artículo ($ _ get [' ]);} else {DIE ("ID o token de sesión inválida");}? 

Qué significa: Si se define la ID del artículo, pero también el Jeto n y este token coincide con el token de la sesión actual, entonces podemos eliminar.

Última nota, utiliza $ _ _ {} que recupera la configuración de una URL, habría sido preferible que sea aún más seguro. Utilizar $ _Post con un formulario para no mostrar un token en las URLs.

La solicitud de confirmación

Si desea evitar la eliminación de errores o los intentos de operar la falla CSRF, es esencial solicitar Confirmación de la eliminación de un artículo.

Aquí, si hago clic en Eliminar mi artículo y se elimina de inmediato y permanentemente, tiene que pensar en tres veces antes de hacer clic.

este método Se usa ampliamente para redefinir una contraseña: primero se pregunta a la antigua.

La atención a las técnicas de seguridad de la falla del CSRF que no funcionan de hecho, no realmente.

A menudo escuchamos eso Para protegerse contra la falla del CSRF, verifique la variable PHP http_re Ferrus que indica qué sitio proviene del usuario. Si proviene de un sitio diferente, no se le permitirá editar el artículo.

Sí Es una buena idea en la base (y siempre es una protección suplementaria), excepto que el enlace de referencia ( HTTP_REFERR) se puede modificar (se dice SPOOFE).

Esta variable está definida por el navegador, por lo que en el lado del cliente. Es decir, también puedo publicar el enlace http://www.monblog.fr/del.php?id=1 de otro sitio, aunque cree que viene bien del mismo sitio, ejemplo con curl:

  CURL_SETUPT ($ CH, CURLOPT_HTTPHEADER, ARRAY ('HOST: www.moblog.fr', árbitro:  

Última nota

AJAX ( JavaScript y XML ) Le permite realizar acciones sin recargar la página. Por lo general, eso es lo que sucede cuando hace clic en el botón Al igual que Facebook. La consulta se envía en segundo plano y el botón se presiona cuando llegó la respuesta del servidor.

Así que surge la cuestión de la falla del CSRF, ¿qué sucede si intentamos intentar eliminar una publicación usando AJAX?

La respuesta es simple, AJAX utiliza la política de origen del mismo origen (política del mismo origen) que evita la ejecución del código a través de sitios. El término "origen" se define en el protocolo, el nombre de dominio y el puerto: dos páginas tienen el mismo origen si y solo si estos 3 valores son los mismos.

quiere aprender más sobre Web Frams?

Esta falla y muchos más se ven en detalle en mi curso de video en las pruebas de intrusión web.

Vamos a hablar de fundamentos: Funcionamiento de HTTP, HTTPS, DNS y ARQUITECTURA WEB Generalmente.

También estableceremos un laboratorio de pruebas con máquinas virtuales para albergar y escanear nuestros sitios vulnerables para aprender sin romper nada.

Vamos, por supuesto, hablaremos sobre todas las fallas web ( XSS, CSRF, SQL, LFI, RFI,... etc.) siguiendo los 10 mejores OWASP, pero también de todo lo que gira en torno a la Seguridad Web: Denis of Service, Mal Configuraciones, Datos personales, Reconocimiento, etc. Impaciente a Comience con usted, propongo un código de descuento para unirse a la CO URS Ahora: https://cyberini.com/cours/hacking-etique-tsts-intusion-web/

E-BOOK PDF 6 mitos en el pirateo que el 90% de las personas todavía creen...

Descubrir ¿Cómo todos los hackers actúan genios? ¿Están en su entorno? Etc...

Descargo mi guía gratuita ×

¿A qué dirección de correo electrónico le gustaría recibir la guía?

Artículos similares

Clickjacking y Fallas de redirección

Hola a todos, me reuní en el artículo de hoy Dos conceptos muy similares, son fallas en Clickjacking y Redirection. Estos son ataques totalmente indetectables de antivirus y otros programas de limpieza, solo un usuario advertido y sensibilizado (en el que estará) es capaz de...

Proteger de la falla ILF (inclusión de archivos locales)

Introducción: ¿Cuál es el artículo de Flaw LFI al destino de los desarrolladores web y los administradores del sitio? La falla ILF tiene su nombre de inclusión de archivos local (inclusión de archivos locales). Permite a un usuario incluir archivos locales (por lo tanto, propiedad del servidor externo) de una URL. Estos archivos...

Proteger de la falla XSS (Scripts de sitio transversal)

Introducción: ¿Cuál es el artículo XSS en el destino de los desarrolladores web y los administradores del sitio? XSS viene de scripts de sitios cruzados y, como ya se tomó la acrónima CSS para hojas de estilo en cascada, usamos una X para "CROSS" (Cruz en inglés). La falla consiste en inyectar un guión arbitrario...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *