Implicancias de la codificación del documento – Parte 2

¿Qué condiciones se deben dar para que el siguiente código sea vulnerable a XSS?

html:
<html>

<head>
    <title>Test</title>   
</head>

<body>

<?php echo htmlentities($_GET['mensaje'], ENT_COMPAT, 'utf-8'); ?>

</body>

</html>

Nota: la codificación del documento que contiene el código mostrado es UTF-8.

Actualización: Explotar el código mostrado

Se deben cumplir las siguientes condiciones para que la vulnerabilidad se haga evidente:

  • El atacante envía como valor de la variable mensaje un texto en formato UTF-7 u otro.
  • El servidor web donde se aloja la página no envía una codificación por defecto (Ej. que no haya una directiva AddDefaultCharset en Apache)
  • Que el navegador use la misma codificación que el texto enviado. En Firefox se debe cambiar manualmente, con lo cual se complica el ataque, sin embargo, si en Internet Explorer la selección automática de codificación está habilitada, entonces la página que contiene el código ya es vulnerable, caso contrario, estamos en el mismo caso que Firefox.

He puesto el código en http://test.buayacorp.com/xss.php para efectos de prueba (para ver el mensaje, usen IE con la mencionada opción habilitada - Ver->Codificación->Selección Automática).

Solución

Poner de manera explícita la codificación adecuada, a través de cabeceras HTTP o del elemento meta.

¿Qué harías si …?

Quieres reportar un simple error sobre seguridad -que se explica en un par de líneas- en una página y te encuentras solamente con el siguiente formulario para hacerlo:

Scotia Bank contact form

Tip: Correr una aplicación con una versión específica del .NET Framework

En las aplicaciones web normalmente no hay mucho problema cuando se quiere que un determinado módulo o aplicación corra en una versión X del .NET Framework, sin embargo, en las aplicaciones de escritorio o "windows", por defecto éstas se ejecutan bajo el runtime de la última versión instalada.

Continue reading

Recursos de fin de semana

Algunos artículos publicados en el transcurso de la semana:

Hay varios enlaces que no he publicado para no hacer tan larga la lista :D.

Primeros resultados de la alianza Zend – Microsoft

Hace algunos días Zend y Microsoft, anunciaban

una alianza para mejorar la performance de PHP en Windows 2003 Server y su planeado sucesor, Longhorn Server. Zend optimizaría la instalación de PHP en servidores Windows con cambios enviados su comunidad de desarrolladores.

Hoy, Microsoft anuncia que está disponible para descarga la primera CTP de FastCGI. Por su parte, Zend también anuncia la liberación de una versión especial de PHP 5.2 para esta CTP.

Descargas

Fresqui, regalará un IPod ¿diario?

Fresqui, un sitio parecido a Digg o Menéame, en su afán de generar más contenido, acaba de anunciar que regalará un IPod diario durante un mes o hasta fin de año:

Hemos decidido (gracias también a que la gente que apoya económicamente fresqui cada día tienen más ilusión y confianza en lo que se está haciendo y entiende estas iniciativas de anteponer a los usuarios ante factores más "típicos de empresa") reunir todos nuestros beneficios desde que se inicio fresqui para durante un mes (es posible que se alargue hasta final de año) premiar diariamente a uno de nuestro mejores usuarios con un iPod.

No soy usuario de fresqui, pero ¿regalarán también un IPod a los usuarios que están fuera de España?, si es así, creo que empezaré a enviar enlaces a partir de ahora :-D.

ReviewMe

Nota: este post es patrocinado por ReviewMe.

A través de un mail que me llegó de Text Link Ads, me entero que esta empresa acaba de lanzar ReviewMe, -como ya todos saben- un servicio que permite que los productos, servicios o sitios web de anunciantes sean revisados por bloggers, algo parecido a lo que hace PayPerPost.

Normalmente este tipo de publicidad (pago por entradas, regalos, etc) estaba "reservado" para blogs con gran tráfico e influencia, pero gracias a este tipo de servicios, ahora está al alcance de sitios pequeños* como este, aunque esto último no necesariamente significa que sitios sin mucho tráfico vayan a recibir muchas peticiones para hacer revisiones.

Según la página de preguntas frecuentes, las revisiones se pueden hacer en el idioma que prevalece en el blog -he visto casos en los que los autores publican en inglés y español en la misma entrada-, además no se exige que la revisión sea necesariamente positiva, esto me parece bien -para el blogger- a la hora de calificar un determinado producto o servicio con cierta independencia, pero, por otro lado, creo que los anunciantes no estarán muy contentos al pagar por recibir críticas -principalmente las que no aportan nada.

En fin, me he suscrito a esta página porque me pagarán por hacer esta primera revisión, "no pierdo nada" haciendo revisiones y talvez en un futuro sea millonario :-P .

*: el blog tiene que cumplir ciertos requisitos para que sea aprobado por ReviewMe

XSS en Apress.com

Mientras intentaba comprar un ebook, encontré que apress.com es vulnerable a XSS.

Ejemplos:

  • XSS (Funciona en IE y Firefox)
  • XSS (Funciona bien en Firefox, pero no termina de cargar en IE)

Esto demuestra que no solo nosotros los novatos cometemos errores tan básicos como el uso no adecuado de $_SERVER['PHP_SELF'] :D

Evalúa tus expresiones regulares con “The Regulator”

The Regulator, es un proyecto Open Source que permite evaluar expresiones regulares, algunas características de esta herramienta son:

  • Permite buscar, reemplazar y separar cadenas en base a una expresión regular.
  • Analizador de las expresiones regulares.
  • Buscar e importar expresiones desde regexlib.com, que es un repositorio con una gran cantidad de expresiones regulares.
  • Coloreado de sintáxis e Intellisense para las expresiones regulares.
  • Posibilidad para crear snippets, para las expresiones regulares más usadas.
  • Posibilidad de generación de código para C# y VB.NET (se puede implementar un plugin para que soporte más lenguajes)
  • ...

Analizador de expresiones regulares
Analizador de expresiones regulares

Intellisense de expresiones
Intellisense de expresiones regulares

Búsqueda de expresiones regulares
Búsqueda de expresiones regulares

En la versión original de esta herramienta no funcionan las búsquedas de expresiones regulares, esto debido a que la dirección e interfaz del servicio web brindado por regexlib.com ha cambiado.

Si desean obtener una versión -talvez inestable- con este pequeño bug corregido*, pueden hacerlo desde este sitio, pero necesitarán -a diferencia de la versión original- el .NET Framework 2

He publicado esta versión modificada, ya que según Roy Osherove -autor de esta herramienta, por el momento no puede solucionarlo por falta de tiempo.

*: en realidad es más un hack para que funcione la búsqueda, que la solución al problema descrito.

Descargas