GoldenData: Una empresa en la que NO se puede confiar

Bien. Hace tiempo vengo hablando sobre las vulnerabilidades web, escribí un artículo sobre los fallos que tenia tiene la web Caffarena y la verdad es que me he encontrado con varias sorpresas en otros sitios web.

Me gustaria hacer una observación a todas las empresas que se dedican al desarrollo de aplicaciones web: Existen frameworks muy buenos, libres y gratuitos y aveces conviene mucho más entender ese framework y no hacer uno propio.

El error que cometen muchas empresas como ésta es que, al usar un mismo framework (desarrollado por ellos mismos), para todos sus clientes, cuando se encuentra una vunlerabilidad en almenos 1 sitio, este mismo fallo se aplica automaticamente a todos sus clientes y de esta forma ponen en riesgo ademas de sus clientes, a los clientes de otras empresas (cuando comparten un mismo servidor de hosting).

Les voy a hablar sobre la empresa GoldenData Ltda., quienes se dedican al desarrollo web. Antes de publicar y decir cualquier cosa, quiero aclarar que yo me comuniqué con estas personas para darles a conocer sus fallos de seguridad en todos y cada uno de sus sitios web obteniendo un cierto interes por parte de ellos para solucionar el problema. En un principio les comenté sobre la falla en su sitio web lo que me respondieron:

Actualmente estamos rediseñando todo el sitio web, así que el sitio actual será desechado en el corto plazo.

Días despues, les envié otro correo electrónico para comentarles que esa falla que tenian en su sitio web se replicaba a todos y cada uno de los sitios de sus clientes, obteniendo la siguiente respuesta:

De verdad me interesa el tema, pero actualmente estoy realmente
colapsado, ya que se juntaron muchos proyectos y temas internos. Voy a
aumentarle la prioridad a ese tema. Estamos en contacto. Saludos!

Ya ha pasado casi un mes desde el primero correo electrónico que les envié y no han solucionado el problema, por lo que no me sentiré mal al publicar sus falencias.

Las vulnerabilidades que afectan a este sitio web son: XSS, FullPath Disclosure, y File Disclosure.

La primera puede ser explotada en la url https://intranet.goldendata.cl. Al introducir un usuario incorrecto podemos ver en la barra de dirección que se pasa por parametro el mensaje “Usuario Incorrecto” mediante la variable $err. El sistema está imprimiendo en bruto el contenido de esa variable, de esta forma el atacante puede modificarla e insertar código arbitrariamente. Ejemplo:

https://intranet.goldendata.cl/index.php?err=%3Cscript%3Ealert(%27Prueba%20XSS%27)%3C/script%3E

Al poder ingresar codigo javascript podemos robar cookies de sesiones, ingresar links falsos, modificar el formulario, etc. Otro ejemplo:

https://intranet.goldendata.cl/index.php?err=%3Cscript%3Edocument.href=%27https://www.google.cl%27%3C/script%3E

Al ingresar a ese link podemos ver que nos redireccionamos a Google, de esta forma podemos redireccionar al visitante a una pagina maliciosa que contenga troyanos, virus, etc usando la identidad y dominio de la empresa “Goldendata.cl”.

La forma de solucionar esta vulnerabilidad es hacer un parseo a lo que se va a imprimir, por ejemplo: print htmlentities($_GET[‘err’]); De esta forma escapamos los caracteres raros a html (como el espacio, mayor o menor que, parentesis, etc). De todas formas, recomiendo NUNCA pasar valores de variables y luego usarlas tal cual. Recomiendo en el peor de los casos usar switch con un valor y segun ese valor imprimir el error. Ej:

https://intranet.goldendata.cl/index.php?err=user_incorrect

Y que el codigo dijiera algo asi:

witch($_GET[‘err’]){

case ‘user_incorrect’: echo “Usuario incorrecto”; break;

case ‘pass_incorrect’: echo “Pass incorrecta”; break;

}

La segunda y tercera vulnerabilidad mensionada la podemos explotar de esta forma:

Tenemos la URL

https://www.goldendata.cl/aplicacion.php?aplicacion=contactenos.php

Lo que estan haciendo un ustedes es un include sucio y en bruto del contenido de la variable $aplicacion, por lo que si nosotros cambiamos ese valor podemos acceder a cualquier archivo del sistema. Por ejemplo al fichero que contiene la informacion de todos sus clientes:

https://www.goldendata.cl/aplicacion.php?aplicacion=../../../../../etc/passwd

De esta forma podemos acceder a los ficheros de configuración de apache y todo lo que nosotros queramos obtener segun nuestra imaginación. Podemos acceder a los ficheros que estan en los directorios “include” de su sitio, pudiendo de una u otra forma acceder a la información de conexion a la base de datos como host, user y pass, etc. De esta forma podemos navegar “libremente” por su sistema como si tuvieramos acceso a el.

Esta vulnerabilidad se corrige de la misma forma que lo anterior, pasando el argumento por un “switch” o por un IF, pero jamas incluir un fichero directamente como lo estan haciendo ahora.

3 comentarios

  1. Muy bueno Zerial.. Me intereso el hosting :)…
    Espero que la prioridad sea alta y la cirrijan.
    Saludos.. despues hablamos

  2. Eso sin contar la posibilidad de usar como proxy anónimo a las páginas citadas…

  3. Zerial

    julio 7, 2009 a las 11:45 pm

    @corrideat: De hecho, creo que usarlas como proxy seria el mejor provecho que le podriamos sacar. Otra utilidad es para enviar spam, facilmente puedes ganar algun tipo de shell y subir un script en php que envie correos electronicos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.