elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] Tokens por sesion para hacer mas dificil falsificar peticiones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Tokens por sesion para hacer mas dificil falsificar peticiones  (Leído 16,020 veces)
tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
[Resuelto] Tokens por sesion para hacer mas dificil falsificar peticiones
« en: 6 Mayo 2013, 21:45 pm »

komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones web? y seria dificil o imposible el falsificar peticiones web? gracias


« Última modificación: 13 Enero 2015, 15:56 pm por #!drvy » En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #1 en: 6 Mayo 2013, 22:33 pm »

Para empezar, los tokens sirven para prevenir CSRF.
http://en.wikipedia.org/wiki/Cross-site_request_forgery

Ahora, esto no previene que el atacante haga un script donde el se conecta a tu pagina, captura el token y te lo envía en su próxima petición. Por tanto, le da cierta seguridad al usuario, pero no hace dificil/imposible que se puedan realizar peticiones web.

El token no suele ser mas que un md5/sha1/string aleatorio. La pagina que vaya a solicitar la acción se lo manda a la que realiza la acción. Esta comprueba si es valido y en tal caso, realiza la acción.

Saludos


En línea

tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #2 en: 6 Mayo 2013, 22:38 pm »

pero si yo mando 123 x $_SESSION y en la otra web esta apuntado 123 y compara si es verdad o no, debe ser imposible hacer peticiones desde el exterior con un formulario no?yo lo entiendo asi
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #3 en: 6 Mayo 2013, 22:42 pm »

La session al fin y al cabo no es mas que una cookie.. (y no voy a explicar porque xD). Si yo hago un script, que se connecte a la primera pagina, guarde la cookie PHPSID y vaya a la segunda pagina mostrando la cookie, el token sera totalmente valido.

Saludos
En línea

tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #4 en: 6 Mayo 2013, 23:24 pm »

a vale ya voy entendiendo algo, dices,que la cookie la guardara y es la misma que en el otro caso, es decir podria navegar no? y que se podria hacer con esa cookie? con ejemplo me entiendo mejor, ya sabes cosas de la informatica



me podriais responder,eske ando atascado en esto de los tokens, me podeis poner algun ejemplo,os lo agradeceria bastante,gracias.

Mod: No hacer doble post.
« Última modificación: 13 Enero 2015, 15:54 pm por #!drvy » En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
xustyx

Desconectado Desconectado

Mensajes: 213


Ver Perfil
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #5 en: 8 Mayo 2013, 16:20 pm »

Lo que puedes hacer que supongo que ya sabrás és, generar todos los formularios con el input hiden del token con php a partir de un string random pasado a md5 y guardado en la db a la hora que un usuario logea, entonces cuando te llega la peticion post miras el user y miras si el token es el que tiene asignado, tambien puedes mirar el referer y ver que la peticion se realizo de una url deseada.

Saludos
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #6 en: 8 Mayo 2013, 16:44 pm »

Yo creo que con un token aleatorio por cada acción a realizar va de sobra. Así incluso aunque tu script resulte vulnerable y alguien es capaz de capturar el token (algo que pasa en ciertas versiones de SMF...) no le servirá mas que 1 vez...

Tal y como te ha dicho @xustyx, la idea es generar el token y añadirlo como un campo hidden al formulario.
Código
  1. <?php
  2. // Generar un sha1 aleatorio.
  3. $token = sha1(rand(0,999).rand(999,9999).rand(1,300));
  4. $_SESSION['token'] = $token;
  5.  
  6. ?>
  7. <!doctype html>
  8. <html>
  9. <head>
  10. <meta charset="utf-8">
  11. <title>PoC</title>
  12. </head>
  13. <body>
  14.    <form action="post.php" method="POST">
  15.        <input type="text" name="usuario" />
  16.        <input type="password" name="password" />
  17.        <input type="hidden" name="token" value="<?php echo $token; ?>" />
  18.        <input type="submit" value="Enviar" />
  19.    </form>
  20. </body>
  21. </html>

Luego en la pagina que va a recibir el formulario y/o realizar la accion, compruebas antes el token..
Código
  1. <?php
  2. // Comprobar si el session o el post del token estan vacios y compararalos para ver si coinciden.
  3. if(empty($_SESSION['token']) || empty($_POST['token']) || $_SESSION['token']!==$_POST['token']){
  4.   die('Tu token no es valido. Realiza tu consulta de nuevo. Si eres un juanker, que sepas que me tire a tu mami anoche.');
  5. }
  6. echo 'Tu consulta ha sido realizada';
  7. ?>

Saludos
En línea

tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #7 en: 12 Mayo 2013, 00:24 am »

os mereceis un  ;-)
ahora por cierto el $_POST['token'] no seria mejor antes pasarle un antiddos(la longitud del campo con un length) o tambien pasarle un anti code injection(filtrar lista blanca con numeros y letras)

es que podria ser que puedan cambiar algo en el codigo y ejecutarlo de forma malintencionada no? vosotros veis esas posibilidades?
En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #8 en: 14 Mayo 2013, 04:32 am »

Suponiendo que la máxima longitud de un sha1 son 40 caracteres en hex, solo se compone de números 0-9 y letras de la a a la f...

Código
  1. <?php
  2. // Comprobar si el session o el post del token estan vacios y compararalos
  3. // para ver si coinciden.
  4. if(empty($_SESSION['token']) || empty($_POST['token'])
  5.   || !preg_match('/[0-9a-f]/',substr($_POST['token'],0,40))
  6.   || $_SESSION['token']!==$_POST['token']) {
  7.   die('Tu token no es valido. Realiza tu consulta de nuevo.');
  8. }
  9.  
  10. echo 'Consulta valida';
  11. ?>

Aunque... lo que mas te puede pasar es que tengas una configuración tan jodida que PHP permita meter 1-2GB en $_POST... lo que haría que tarde unos cuantos segundos mas en procesar nada mas creo yo.. xD


Citar
antiddos(la longitud del campo con un length

Fiarse de un input con length por seguridad... es como comprarse esta pistola y rezar que no te mate...


Saludos
« Última modificación: 14 Mayo 2013, 04:35 am por drvy | BSM » En línea

tecasoft


Desconectado Desconectado

Mensajes: 319

Ciberseguridad tecasoft.com


Ver Perfil WWW
Re: komo se hacen tokens por sesion para hacer mas dificil el falsificar peticiones
« Respuesta #9 en: 14 Mayo 2013, 20:05 pm »

pues hay un pequeño problema en el campo del formulario al crear el $_SESSION caduca la session al cabo de 30 o 40 min y me da error,envede consulta con exito,me caduca la session entonces tendre que hacerlo con un $_SERVER['HTTP_REFERER'], x lo visto se me soluciona con el referer,veis algun inconveniente que utilice el referer solo?


Edito: donde supuestamente esta el formulario, es donde va un editor web(para que los usuarios metan javascript,html,pero lo k yo kiera,es decir un wysiwyg) pasaria algo con un XSS que me puedan secuestrar cookies propias o de algun user,estando desde el editor web,repito hago yo lo k kiera cuando lo introduzcan* en formato web* NO en html puro codigo*, perdonar si me explicado mal
« Última modificación: 14 Mayo 2013, 20:17 pm por tecasoft » En línea

http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines