Mostrando las entradas con la etiqueta XSS. Mostrar todas las entradas
Mostrando las entradas con la etiqueta XSS. Mostrar todas las entradas

viernes, 3 de agosto de 2007

Inyecciones HTML (XSS) - IV

Me ha dado un remordimiento terrible de conciencia:
"No creo que sea buena idea enviar un XSS a nuestros amigos". No lo haremos.Mas bien les explicaré cómo evitar caer en una trampa XSS. Ojo que no hay una única manera de inyectar XSS.

Dado que cada página web tiene diferente código HTML, cada XSS se construye de manera diferente... luego de un cuidadoso examen al HTML que contiene una página.
Las páginas más atacadas son precisamente las de login, osea las que se usan para entrar a un sitio web.

Para que en una página funcione el XSS inyectado, debemos confirmar que el código inyectado se ha ubicado dentro de las etiquetas FORM y, además debemos reconocer los nombres de los controles que nos interesa obtener su información, en este caso: txtUser y txtPwd. Observe la imagen: Ya que el atacante intentará robar el usuario y password, chequeen este XSS:





Exacto... lo que hace este XSS es cerrar el tag FORM original y crear un nuevo tag FORM.Si te das cuenta, el tag FORM no ha cambiado mucho,,, simplemente se le ha añadido un poco de código javascript, el cual se deberá ejecutar cuando el usuario presione el botón Submit.





Pero, qué hace exactamente ese código javascript?
Primero crea un objecto imagen al vuelo y luego para mostrar una imagen en ella, realiza una petición silenciosa al sitio
http://www.SitioHackeador.com/ ... al pedir la imagen está pasándole el nombre del usuario y su password sin que éste lo note.
Ahora, para que esto funcione, previamente a tu correo debería llegarte la invitación a que te loguees desde un sitio web que cotidianamente visitas... como ya les había mencionado anteriormente.Una url más o menos así:








Nota que la url es tremendamente extensa, por lo cual dificilmente te darías cuenta que ese sitio web frecuentemente visitado por ti, incluye en su url... una inyección HTML.


Estas invitaciones funestas que llegan a nuestros correos casi diariamente, siempre terminan haciendo caer por lo menos a una persona de tantas que reciben el email.


Lo desastroso de todo esto es que una persona, si no examina la url cuidadosamente, nunca se dará cuenta que fue timada... ya que él se logueará en el sitio web de manera legítima y correcta e ingresará al sitio conocido... y nunca sabrá que sus datos fueron hurtados.


Cómo nos libramos de los ataques por inyección HTML?


Para el desarrollador de sitios web:
-Chequear cuidadosamente la data ingresada por el usuario en las cajas de texto.
-Todos los caracteres no alfanuméricos deben ser convertidos a caracteres HTML.
-Contínuo testeo.
Para los usuarios de los sitios web:
-Desactivar los lenguajes script de los browsers.


Pero esto no siempre da resultado porque no funcionaría como en el caso que les planteé hoy ( de reemplazar el tag FORM).


-Cuando se trate de visitar un sitio web, lo mejor es acceder directamente desde el browser y no pinchando en un link que insperadamente recibimos vía email o, en todo caso... debemos examinar el link con mucho cuidado.
Les dejo un sitio como ejemplo (para que practiquen):

jueves, 26 de julio de 2007

Inyecciones HTML (XSS) - III

Como les decía en el post anterior:

"No has logrado ingresar a un sitio web porque olvidaste el password, pero has notado algo muy peculiar en esa página".
Y cuál es ese algo muy peculiar?


Pues que cada vez que escribes algo en un control html... éste luego pasa a formar parte del contenido de la página web, cierto?

Ciertoooooooooo!! oye tienes razón!!, hace un rato puse como usuario 'XXX' y luego que presioné el botón ingresar, había un mensaje dentro de la página que decía "Bienvenido XXX".

Luego, si yo erraba el password, se mostraba un texto en rojo sobre la página web que me decía que el password 'xyz' que acababa de ingresar no era válido.

Qué significa todo esto?

Que si un developer no ha validado los textos que puede ingresar un usuario... entonces tiene un hueco de seguridad, y, además, si tú logras ejecutar un script allí... entonces decimos que estamos realizando un ataque XSS o inyección HTML.

Vamos a crear un caso similar y bastante simple, cuya finalidad será mostrar otro ataque XSS.

Imagina que un usuario intenta ingresar a un sitio web, pero no recuerda su usuario ni/o password.
Debido a esto, recibe un mensaje que dice: "datos incorrectos, inténtelo de nuevo."

Lo peculiar es que este mensaje se muestra en la url, algo así:
http://www.misitioweb.com/login.asp?msg=datos%20incorrectos,%20intentelo%20de%20nuevo
Y tú deduces, "si la página web me está mostrando un mensaje que estaba en la url... entonces, si yo cambio el mensaje en la url... hmmm.... será??"

Y todo curioso, modificas la url a esto:


Te imaginas el resultado:
una mensaje de alerta que dice "XSS",
Eureka!! otro hueco donde inyectar XSS...
cómo?? digo esteeeee, qué mal... hay que corregir esto jeje.

Ahora crearemos un ataque XSS, armaremos un XSS bien bonito y, se lo enviaremos a nuestros mejores amigos.

Pero eso será en la próxima entrega.

Inyecciones HTML (XSS) - iii

Chau.

sábado, 21 de julio de 2007

Inyecciones HTML (XSS) - II

Hola, les decía en el anterior post que...
sí había forma de que roben tu información y de que te logren engañar con el XSS.
Cómo así?
Es que el XSS opera sobre el sitio web original. No sobre dominios desconocidos.

Quiero decir que sería posible que un día te llegue un correo de Microsoft comunicándote que acabas de ganar el premio mayor del Imagecup (por poner un ejemplo) y, que lo único que tienes que hacer es confirmar tus datos accediendo al link que te adjuntan.
Nuevamente, tú astutamente pasas el mouse sobre el link y... diablos ¡Es cierto! es de Microsoft ese link... es una dirección web de microsoft...YEEEEEE!!! he ganado!!! gané!! gané!! mamá, papá abuela, por fin compraremos el terrenito en las Casuarinas!!!
uuuuuuuuuuun momento... pero si yo nunca participé!!... hmmm... se habrán confundido?? sí, eso debe ser...
no importa, cobraré el premio y, la culpa es de ellos... no les dolerá perder unos miles de dólarillos, verdad?
y pink... presionas el link y vas a la página web para confirmar tus datos y, confirmas tus datos y,(música melancólica) se jodió todo... le estás dando tus datos a los amigos de lo ajeno.
Acabas de ser una víctima del XSS.
Tú me dirás... en qué momento me pueden haber robado la información? si el link era de Microsoft?

Verás...(para esto hay que saber un poquito de HTML y un poquito de javascript)
Muchos sitios web le dan al usuario la opción de ingresar data en un formulario y, según esa data, devuelven una respuesta.
Ejemplo: si tú escribes XXX, el resultado podría ser "Bienvenido XXX", me entiendes?
Esto puede parecer una cosa inofensiva, pero no lo es: es el punto de entrada para los XSS...

Imagina que el usuario en lugar de escribir XXX... escribe


... entonces, como el browser reconoce el javascript generará un mensaje javascript que dirá "Habla sanazo!!" vamos bien?
Otro ejemplito: está intentando loguearte en un sitio web y, no recuerdas tu password... y por cada intento que haces, se muestra un texto en rojo en la página que dice: "la contraseña ZZZ es incorrecta, inténtalo de nuevo".

Has fracasado en tus 80 intentos de ingresar al sitio web, y no lograste ingresar, pero te has dado cuenta de algo...verdad?
La seguimos en la próxima.

Inyecciones HTML (XSS) - ii

Chau.

sábado, 14 de julio de 2007

Inyecciones HTML (XSS) - I

Ya --en post anteriores-- habíamos hecho un profundo análisis de lo que eran las inyecciones SQL...
y qué eran?
Era ni más ni menos que incluir nuestro código SQL en las consultas SQL que se hacían en las aplicaciones web.
La intención de estas inyecciones, eran obviamente causar estragos, daños, robar información...
en fin actos vandálicos para perjudicar y/o obtener algo.
Eso es lo que nosotros revisamos con ejemplos y todo. Fin del tema.

En esta ocasión hablaremos de otra poderosa e importante manera de robar información: Inyecciones HTML (Cross site scripting, CSS o XSS).
Pero, qué son las benditas inyecciones HTML?
Una inyección HTML es una forma de ataque que se realiza contra un sitio web, mejor dicho contra una página web, que consiste en incluir código de un lenguaje script como vbscript, javascript, etc... en determinadas áreas en donde el usuario ingresará algunos datos... como su nombre tarjeta de crédito, etc.

Hmmm, aún no entiendo...
Mejor un ejemplo cierto?
Cuántas veces, diariamente, llegan a nuestro correo mensajes desconocidos...
comunicándonos falsamente que ganamos $200, o que nuestra cuenta de tal banco está con problemas y que necesitan que confirmemos algunos datos, o que tu abuelita dio a luz, o que tu perro se casó con tu pato, en fin....

Pero nosotros astutamente miramos de pies a cabezas esos correos y decimos: es falso!! y pank ...lo eliminamos.
Y por qué lo eliminamos? porque diestramente pasas el cursor sobre el link y dices: qué pendejo!! esto es un fraude.
Claro, tú lo borras porque el enlace no corresponde con lo que dice el mensaje... y todo orgullosos dices: A MI ME LA QUIEREN HACER!! TAN WONES NO??

Claro, si vieras que el link corresponde con el mensaje, ahí sí harías click no?? claro pe' ...ahí sí.

Te jodiste, ahí te la hacían ah?? caías como un manso cordero.. víctima del XSS.

En la próxima entrega les explico cómo se hace eso.Saludos.

Inyecciones HTML (XSS) - i
Inyecciones HTML (XSS) - ii
Inyecciones HTML (XSS) - iii
Inyecciones HTML (XSS) - iv