Ejemplos de fuga de información a través de web

miércoles, 16 de julio de 2014

En el proceso de desarrollo de un software (ya sea una aplicación web o un sistema de información en general), el código se suele someter a un continuo cambio que engloba despliegues en producción, reestructuraciones, actualizaciones, etcétera. Durante estas etapas de la evolución del software aumentan las posibilidades de que se produzca un error humano que pueda suponer un riesgo para la integridad y la privacidad de la información que la aplicación gestiona.

La fase de recopilación de información sobre el sitio que se está auditando es clave durante el proceso de auditoría. Cuanta mayor información posea el auditor, con mayor eficacia podrá detectar fallos y errores. Las fugas de información o código suelen proporcionar los datos necesarios para culminar o continuar ataques, dando peso a la auditoría. A continuación se muestran diversos casos que ejemplifican diversos escenarios habituales de fugas simples (pero graves) de información.

Caso 1: Conexiones a Base de datos en ficheros de respaldo

Un ejemplo clásico de revelación de información muy sensible es dejar la cadena de conexión al servidor de base de datos en una copia de seguridad del fichero con la lógica de la aplicación. En ella suele encontrarse la contraseña, y esto permite al atacante o auditor tomar control.

Conexión a base de datos MySQL

Como ejemplo de lo común que podría resultar (aunque obviamente no todos los resultados se puedan contar como una fuga), usando un buscador se pueden descubrir miles de resultados de este tipo.

Resultados al buscar por cadenas de conexión a servidores MySQL en archivos sql o bak

Caso 2: Fugas de información generadas por el sistema operativo

Es importante tener en cuenta los ficheros generados por el sistema operativo. Por ejemplo, en el caso de Linux se podría llegar a encontrar el histórico de los comandos.

Resultados al buscar archivos bash_history

Si profundizamos en las herramientas usadas por un sistema operativo podemos encontrar que editores de texto como VIM o EMACS, generan copias de seguridad ocultas .Sin el debido cuidado, esa información puede quedar pública.

Caso 3: Errores por parte del desarrollo y el despliegue de la aplicación

Es muy común encontrar fugas de información provocadas por un mal desarrollo y que como consecuencia se revele información sobre rutas internas o la propia implementación. Un ejemplo habitual son los errores mostrados por PHP.
Fuga de información generada por un error en el script PHP

En la imagen se observa una fuga de información que revela tanto la ruta interna del fichero afectado, como un parámetro al que se accede directamente:

Resultados al buscar por la fuga de información mostrada en la imagen anterior

Caso 4: Manejadores de errores

También es posible que el sitio web implemente un manejador de errores como el caso de ASP.NET, elmah (Error Logging Modules and Handlers). Este muestra los errores producidos a lo largo de la vida del servidor web y si no se ha configurado correctamente estará disponible al público accediendo al "fichero" elmah.axd:

Resultados al buscar por el manejador de errores elmah

Existes múltiples manejadores de errores para cada plataforma. Además, dependiendo del manejador mostrará mayor o menor cantidad de información. Un ejemplo para PHP sería el framework Symfony, que contiene su propio manejador de errores y muestra una traza del error muy completa junto con la línea de código afectada:

Manejador de errores Symfony

Resultados al buscar manejadores de erorres Symfony

Conclusión

Independientemente de la plataforma o el lenguaje que se utilice para el desarrollo de la aplicación, se pueden encontrar fugas de información que pueden comprometer la seguridad de la empresa y a su imagen. Es importante configurar correctamente los entornos, almacenar las copias de seguridad en lugar privado, aprovechar herramientas de control de versiones y no mantener copias innecesarias, además de revisar periódicamente los archivos públicos del servidor. Faast, como herramienta de pentesting persistente, tiene en cuenta este tipo de fugas de información (y muchas otras) que permitirían a un posible atacante conocer en mayor profundidad la aplicación y sus componentes, detectándolas y mostrando evidencias de la fuga. Al detectarla, Faast intenta extraer el mayor volumen de datos posible, incluyendo usuarios, versiones de software, servicios, rutas internas, etcétera, relacionando la fuga de información obtenida con el servidor que la contiene.

Evidencia de fuga de código mostrara en la interfaz web de Faast

Oscar Sánchez
oscar.sanchez@11paths.com

No hay comentarios:

Publicar un comentario en la entrada