martes, 31 de agosto de 2010

XSS

A día de hoy aún es muy fácil encontrarse aplicaciones web vulnerables a XSS a pesar de su peligrosidad. OWASP este año la ha posicionado en el segundo lugar del Top 10 de los riesgos más importantes en aplicaciones web.

Para quienes no conozcan este fallo, decir que las siglas de XSS provienen de Cross Site Scripting sustituyendo la C de cross por una cruz X para no ser confundido con CSS (Cascading Style Sheets). En resumidas cuentas, esta vulnerabilidad permite inyectar código y que sea ejecutado sin que este sea validado. El fallo puede afectar de forma "persistente" (se consigue inyectar en la base de datos) o "reflejada" (se inyecta a través del navegador que "lo refleja en la aplicación web"). Algo más de información en en este enlace de Wikipedia.

Mediante este ataque se pueden suplantar las credenciales de un usuario autenticado, modificar el aspecto de la página, redireccionar el navegador a una web falsa para practicar phishing, etc.

Como prevención, se han de validar todas las entradas de la aplicación. Algunas medidas a tomar en cuenta es el filtrado de etiquetas html (por ejemplo en PHP con librerías y clases ya existentes como son Strip_tags o InputFilter) y las consultas que realicemos a la base de datos ya que podemos llegar a inyectar más parámetros, consultas... y que estás formen parte del resultado.

Algunos ejemplos de tipo reflejado en los que simplemente mediante una instrucción javascript se cambia una imagen por otra al realizar una consulta desde el navegador son:
La web de la CEOE al consultar una noticia. Les avisé por mail y lo solucionaron a los pocos días pero ni respondieron dando las gracias.

CEOE

En la web PLANB no lo aún solucionado aún y van a pasar dos meses desde el aviso, al igual que la de Sanitas, ambos no respondieron al mail que les envié. Direcciones que obtuve de sus webs y/o de la información del whois.

PlanB

Sanitas


Otras en cambio ponen solución rápidamente y te lo agradecen como es el caso de Habemusporra. En cuanto recibieron el mail se pusieron con ello y lo solventaron rápidamente. Esta vez era de tipo persistente ya que los comentarios que se almacenaban en la base de datos no se filtraban y cada vez que estos se cargaban reproducían el código. Probé varias cosillas como sustituir los enlaces de botones, aspecto de la web, inserción de iframes que permiten robar las cookies de autenticación... pero como os comento, lo solucionaron.

Habemusporra



Tanto en las clases de programación como en otros cursos que he hecho , y por la experiencia de gente con la que he hablado sobre el tema es que no enseñan a programar con seguridad. No le dan importancia, al igual que cuando en C desbordabas el buffer y te decían: "mete un número más pequeño". No sé si a los demás os ha pasado o si es algo que se debe aprender por cuenta propia.


lunes, 30 de agosto de 2010

"Videojuego" en C#


La verdad es que es un poco aventurado que lo llame videojuego, por eso lo he puesto entre comillas en el título.

Lo hice en Visual Studio 2008 con C# y no he empleado XNA ni ninguna librería especializada, simplemente Windows Forms y el .NET Framework 3.5. Así también justifico los resultados... porque cada vez que se mueven los muñecajos parece que se superponen sobre el fondo y hace cosas un poco feas. Si alguien sabe como resolverlo se lo agradeceré.

El juego se llama GreenWar (cuando lo probéis lo entenderéis). La contraseña para descomprimirlo es: c0c0nu7

Descargar GreenWar.

MD5: 9b623feaf5d005d6fefc59804778f4e0
SHA-1: fb1ea0a0253c86f4ff55dc5b04bc9da048de224c