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):

No hay comentarios.: