Después de acontecimientos pasados, y tras comprobar que en efecto no tienen intención de corregir los problemas de seguridad, reemprendemos la labor con esta nueva entrega.

El artículo de hoy solamente se centrará en las debilidades tipo Pishing o Content spoofing.

Cuando accedemos a la sección de tienda de P.C. Green, y si prestamos un poco de atención a la URL que aparece en nuestro navegador que es del estilo a www.pcgreen.com/wac2/webtemplates/m2/index.asp?trg=newandspecial.asp&SID=672A87D731C84735BD0023839C737400, podremos concluir varios detalles que pueden resultarnos de interés:
– La web está desarrollada en páginas ASP.
– Está estructurada en base a plantillas.
– Se ha iniciado una sesión en el servidor para almacenar datos que deben estar disponibles durante las diferentes páginas que visitemos en nuestra conexión.

Lo más lógico es que siendo ASP, las plantillas se carguen usando <!–#include file=""–>, como es sabido, a no ser que el servidor tenga cerradas las conexiones salientes, esto permite incluir también archivos remotos. Si los permisos no están correctamente asignados, también nos permitirá acceder a archivos que en niveles superiores del directorio virtual donde se aloja la web.

El parámetro trg, es sin duda el nombre de la página a cargar, en este caso newandspecial.asp. Sería interesante saber donde se buscan esas páginas a ser incluidas. Lo más probable es que estén al mismo nivel de directorios que la página principal, es decir bajo www.pcgreen.com/wac2/webtemplates/m2.

Si la suposición es correcta, entrando en www.pcgreen.com/wac2/webtemplates/m2/newandspecial.asp, nos debería mostrar la página en cuestión. Y así es.

Por tanto, podríamos hacer que se cargara otro tipo de plantilla, ahora necesitamos saber si podemos acceder a URL remotas usando ese mismo include, por lo que vamos a intentar hacer que el archivo que se incluya sea la home de Google:
www.pcgreen.com/wac2/webtemplates/m2/index.asp?trg=http://www.google.es.

En la misma linea, podríamos reemplazar la página de Google por una desarrollada a propósito:
www.pcgreen.com/wac2/webtemplates/m2/index.asp?trg=http://www.javiergutierrezchamorro.com/wp-content/uploads/2005/02/pcgreen_3.html.

La técnica mencionada permitiría insertar enlaces trucados a P.C. Green de manera que los usuarios incautos no sospecharan en absoluto, y hacernos con sus datos personales.

El mismo mecanismo, es aplicable para hacernos con archivos locales del sistema, pero al ser transformados directamente en un marco (frame), no podremos obtener aquellos que estén fuera del servidor web. En cambio si que podemos acceder a recursos en niveles superiores al aplicativo web, dentro del directorio virtual.

Por ejemplo al propio cover: www.pcgreen.com/wac2/webtemplates/m2/index.asp?trg=../../WebCorporate/Block/index.asp.

Lo comentado anteriormente, se debe simplemente a defectos en la programación del sistema, por lo que ahora necesitamos saber como evitar que esto ocurra.

Como norma general, no es una buena práctica utilizar los datos que introduce el usuario de forma directa, necesitamos hacer previamente ciertas comprobaciones, más todavía si esos datos son introducibles desde la URL del navegador.

Primero hay que asegurarse que el tipo de datos introducido, encaja con el tipo esperado. Si esperamos un número, y nos introducen un carácter, tenemos que detectarlo lo antes posible.

Posteriormente comprobamos el rango, intervalo de validez para datos numéricos, longitudes y juego de caracteres usado si es una cadena, … En este caso es típico verificar que únicamente se han introducido caracteres válidos. Si aplicásemos esto consejo a lo dicho en el artículo, deberíamos comprobar que el string, no accede a directorios/recursos no permitidos.

De esta forma conseguimos blindar todos los puntos de entrada de información en nuestra aplicación, por lo que nada de lo que aquí se ha comentado sería efectivo como ataque potencial.

No os perdáis el resto de entregas, porque todavía nos queda por comentar como obtener datos técnicos detallados de la implementación; debilidades contra SQL Injection; Uso como plataforma de envío de emails; …