comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] ¿Para qué usan el csrf_token en los formularios?

  • 13 Respuestas
  • 4414 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado GGZ

  • *
  • Underc0der
  • Mensajes: 51
  • Actividad:
    0%
  • Reputación 0
  • COME AT ME BRAAAAH.
    • Ver Perfil
« en: Diciembre 28, 2016, 05:04:09 am »
Hola.

Una pregunta, hay páginas que usan un token al enviar formularios POST, pero no entiendo muy bien el funcionaiento de éste.
¿Alguien me podría explicar para que sirve?, porque yo de todos modos puedo sacar el token con bash.

Un ejemplo (funciona perfectamente):

Código: You are not allowed to view links. Register or Login
#!/bin/bash
echo "Token usado para enviar formularios via post"
while true; do wget -qO - http://codeforces.com/profile/ | grep -m 1 "input type='hidden' name='csrf_token' value" | awk '{print $6}' | cut -d "'" -f 2; done

Lo ejecutan con bash co.sh o ./co.sh

Saludos.
« Última modificación: Diciembre 29, 2016, 08:13:50 pm por Nobody »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5339
  • Actividad:
    18.33%
  • Reputación 30
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Diciembre 28, 2016, 08:57:34 am »
Hola @You are not allowed to view links. Register or Login,

No estoy 100% seguro, pero si un 99% de que los tokens se generan de forma dinámica. Es decir, el usuario ejecuta cierta acción, se genera el token y eso le sirve para llevar a cabo la acción que está realizando. Una vez que finalizó esa acción, el token queda deprecado (No sirve más)
Es por ello que por más de que lo puedas ver o robar, no lo vas a poder utilizar debido a que ya lo utilizó la persona previamente y quedó deprecado.

Saludos,
ANTRAX


Desconectado GGZ

  • *
  • Underc0der
  • Mensajes: 51
  • Actividad:
    0%
  • Reputación 0
  • COME AT ME BRAAAAH.
    • Ver Perfil
« Respuesta #2 en: Diciembre 28, 2016, 09:36:25 am »
Mmm pero si yo lo puedo ver, dejo el token funcionando hasta que lo use, o ¿no es así? Entonces de todas formas puedo hacer la consulta.
« Última modificación: Diciembre 28, 2016, 09:39:54 am por GGZ »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5339
  • Actividad:
    18.33%
  • Reputación 30
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #3 en: Diciembre 28, 2016, 09:46:11 am »
Depende como esté hecho el sistema, pero en teoría 1 token se puede usar 1 sola vez. Esa persona ya lo utilizó en el momento que lo capturaste, por lo que cuando lo quieras usar ya no te servirá.

Saludos,
ANTRAX


Desconectado GGZ

  • *
  • Underc0der
  • Mensajes: 51
  • Actividad:
    0%
  • Reputación 0
  • COME AT ME BRAAAAH.
    • Ver Perfil
« Respuesta #4 en: Diciembre 28, 2016, 10:15:29 am »
Claro entiendo ahora lo que decís. O sea que ¿no existe forma de usarlo?, la única forma sería adivinando el siguiente token sin hacer una petición a la página, porque cuando hago la petición el token ya se elimina, ¿no?

No creo, entonces ¿por qué existe el captcha? si con un token ya está (según tú definición), sólo podrías mandar una petición.
« Última modificación: Diciembre 28, 2016, 10:39:46 am por GGZ »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5339
  • Actividad:
    18.33%
  • Reputación 30
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #5 en: Diciembre 28, 2016, 10:42:43 am »
El captcha sirve para que no te roben una password por medio de fuerza bruta.
Son dos cosas diferentes


Desconectado GGZ

  • *
  • Underc0der
  • Mensajes: 51
  • Actividad:
    0%
  • Reputación 0
  • COME AT ME BRAAAAH.
    • Ver Perfil
« Respuesta #6 en: Diciembre 28, 2016, 10:52:51 am »
Creo que te había entendido mal, ya sé como funciona un token. Cada vez que entrás a la página se genera uno y se elimina cuando lo usás o después de un determinado tiempo.

Lo que yo había entendido de lo que me dijiste es que un token (que tranquilamente puede ser un formulario de contraseña y usuario) sólo se podía utilizar una vez entonces no podía mandar muchas consultas porque el token ya fue usado, pero no, simplemente se genera otro token y listo.

Desconectado Cr4id3r

  • *
  • Underc0der
  • Mensajes: 9
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #7 en: Diciembre 28, 2016, 10:59:46 am »
Buenas tardes CGZ,
Esto se usa en formularios con Django, es un método de seguridad que se implementa.

You are not allowed to view links. Register or Login

 ;D

Vive solo por lo que estas dispuesto a morir

Desconectado rush

  • *
  • Underc0der
  • Mensajes: 377
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« Respuesta #8 en: Diciembre 28, 2016, 01:30:11 pm »
En mexico existia y algunos todavía los dan son TOKENS, consta de un dispositivo que genera números aleatorios cada 5 segundos, eran usados para acceder vía web, te pedía tu num de tarjeta o cuenta, tu nip y tu token, pero como dice antrax aunque otra persona sepa ese token, ya no servirá mas cuando iniciaste sesión o cuando han pasado los 5 segundos.

En realidad no se exactamente como funciona ese metodo, pero ya te explicaron maso menos como es que se utiliza.



Se que no tiene nada que ver con redes, pero tal vez el funcionamiento es similar.

You are not allowed to view links. Register or Login


Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1904
  • Actividad:
    18.33%
  • Reputación 15
    • Ver Perfil
« Respuesta #9 en: Diciembre 28, 2016, 06:16:19 pm »
El token sirve para evitar CSRF, ahora bien, para ello, el token debe ser dinámico en cada petición, sino, no serviría de nada (ojo, aunque esto esté implementado podrías utilizar XSS para robar el token y hacer así CSRF, pero, ya estamos hablando de otra vulnerabilidad).

Sigamos, qué es CSRF?

CSRF (Cross-site request forgery) es una vulnerabilidad que permite al atacante que una víctima lance una petición a un servidor A, desde un servidor B, sin que la víctima obviamente lo sepa. Por este motivo, si el atacante no tiene el token, la aplicación nunca "tramitará" su petición. (Explicado a grosso modo para que me entiendas).


Cualquier cosa me comentas.



Desconectado HelThunk

  • *
  • Underc0der
  • Mensajes: 43
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
« Respuesta #10 en: Diciembre 28, 2016, 08:10:51 pm »
Mi definición, para que se pueda entender fácil:
Imagina que el token es el sistema de doble autentificación aplicado en muchos servicios (como gmail), el cual si lo activas, puedes configurar tu teléfono para que si intentas iniciar sesión, tengas que introducir un código (token) que te envían al teléfono u otro correo alternativo. Ese código solo puedes utilizarlo una vez, y si no llegas a utilizarlo caduca al poco tiempo, en este caso, el token es el código aleatorio que recibes en el teléfono y tienes que introducir para iniciar sesión.

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
« Respuesta #11 en: Diciembre 28, 2016, 08:57:17 pm »
You are not allowed to view links. Register or Login
El token sirve para evitar CSRF, ahora bien, para ello, el token debe ser dinámico en cada petición, sino, no serviría de nada (ojo, aunque esto esté implementado podrías utilizar XSS para robar el token y hacer así CSRF, pero, ya estamos hablando de otra vulnerabilidad).

Sigamos, qué es CSRF?

CSRF (Cross-site request forgery) es una vulnerabilidad que permite al atacante que una víctima lance una petición a un servidor A, desde un servidor B, sin que la víctima obviamente lo sepa. Por este motivo, si el atacante no tiene el token, la aplicación nunca "tramitará" su petición. (Explicado a grosso modo para que me entiendas).


Cualquier cosa me comentas.

Esa es la unica respuesta correcta de todas las que te dieron

Voy a tratar de explicar un poco mas.
Un captcha está para asegurarse de que hay una persona haciendo una petición. Si no está el captcha, podes automatizar la peticion con un programa.
Un token anti csrf está para asegurarse de que la petición la hizo el usuario que está logueado y que esta no fue forzada por otra página.

Por ejemplo, yo puedo poner esto en este post: <img src="You are not allowed to view links. Register or Login">
Suponiendo que vos estas logueado en tubanco.com y que esa es la url para hacer transferencias, tu navegador al tratar de cargar la imagen estaria haciendo una transferencia de plata sin que vos lo sepas.
Si esa página agrega el token como un parámetro y lo checkea cuando recibe la petición, va a tirar un error en lugar de hacer la transferencia. Yo no podria saber ese token por la same origin policy de los navegadores.
También se puede forzar una petición POST, poniendo un formulario y enviandolo con javascript

Si estas haciendo un bot podes hacer que se loguee, lea el token y haga la petición, porque no estan intentando protegerse de un bot, si no de un csrf.

Conectado Nobody

  • *
  • Underc0der
  • Mensajes: 196
  • Actividad:
    8.33%
  • Reputación 4
  • Security as art.
    • Ver Perfil
    • Nobody Test Laboratory
  • Twitter: @n0bodysec
« Respuesta #12 en: Diciembre 29, 2016, 08:12:01 pm »
¡Hola!

Dada la cantidad de respuestas y la información aportada, doy el tema como solucionado.

Por favor, no dudés en comentar si surge alguna otra duda.

Saludos.
You are not allowed to view links. Register or Login

Desconectado GGZ

  • *
  • Underc0der
  • Mensajes: 51
  • Actividad:
    0%
  • Reputación 0
  • COME AT ME BRAAAAH.
    • Ver Perfil
« Respuesta #13 en: Diciembre 31, 2016, 08:00:17 am »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
El token sirve para evitar CSRF, ahora bien, para ello, el token debe ser dinámico en cada petición, sino, no serviría de nada (ojo, aunque esto esté implementado podrías utilizar XSS para robar el token y hacer así CSRF, pero, ya estamos hablando de otra vulnerabilidad).

Sigamos, qué es CSRF?

CSRF (Cross-site request forgery) es una vulnerabilidad que permite al atacante que una víctima lance una petición a un servidor A, desde un servidor B, sin que la víctima obviamente lo sepa. Por este motivo, si el atacante no tiene el token, la aplicación nunca "tramitará" su petición. (Explicado a grosso modo para que me entiendas).


Cualquier cosa me comentas.

Esa es la unica respuesta correcta de todas las que te dieron

Voy a tratar de explicar un poco mas.
Un captcha está para asegurarse de que hay una persona haciendo una petición. Si no está el captcha, podes automatizar la peticion con un programa.
Un token anti csrf está para asegurarse de que la petición la hizo el usuario que está logueado y que esta no fue forzada por otra página.

Por ejemplo, yo puedo poner esto en este post: <img src="You are not allowed to view links. Register or Login">
Suponiendo que vos estas logueado en tubanco.com y que esa es la url para hacer transferencias, tu navegador al tratar de cargar la imagen estaria haciendo una transferencia de plata sin que vos lo sepas.
Si esa página agrega el token como un parámetro y lo checkea cuando recibe la petición, va a tirar un error en lugar de hacer la transferencia. Yo no podria saber ese token por la same origin policy de los navegadores.
También se puede forzar una petición POST, poniendo un formulario y enviandolo con javascript

Si estas haciendo un bot podes hacer que se loguee, lea el token y haga la petición, porque no estan intentando protegerse de un bot, si no de un csrf.

Buenísima explicación, todo aclarado.

Gracias a todos los que se tomaron el tiempo de contestarme.
« Última modificación: Enero 01, 2017, 04:45:30 pm por GGZ »

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 5274
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
Crear un archivo .vbs para ejecutar un archivo .bat en invisible

Iniciado por NMS

Respuestas: 2
Vistas: 3609
Último mensaje Marzo 13, 2017, 10:37:57 pm
por sadfud
allegro 5,opngl,sdk para fan game modo storyboard game

Iniciado por Mr.Tru

Respuestas: 2
Vistas: 251
Último mensaje Mayo 23, 2018, 01:19:20 pm
por Mr.Tru
Cómo uso la "/" para hacer un select en una tabla

Iniciado por tetano32

Respuestas: 3
Vistas: 792
Último mensaje Diciembre 20, 2017, 04:41:12 pm
por tetano32
Parámetros para un script que permita saltar a root con "su"

Iniciado por DUDA

Respuestas: 5
Vistas: 1438
Último mensaje Marzo 28, 2017, 08:23:12 pm
por seth