Errores de configuración y malas prácticas: PHP Info

miércoles, 25 de junio de 2014

Cada día se configuran cientos de servicios, se actualizan y quedan expuestos a olvidos y fallos de configuración. La tecnología PHP se encuentra muy distribuida en Internet y la configuración de manera desatendida o por defecto puede provocar que se exponga más información de la se desea. En esta entrada nos centramos en las características de la función de "phpinfo" y cómo aprovecharlas para obtener el máximo beneficio.

Con simples búsquedas en Google y mediante parámetros avanzados se podrían encontrar gran cantidad de archivos del tipo phpinfo.php. En la imagen se puede observar cómo quedan al alcance de la mano alrededor de 22.500 resultados. Muchos de ellos serán archivos de este tipo.


Archivos phpinfo disponibles públicamente

¿Por qué estos resultados son importantes en un pentesting? La primera fase del pentest es el descubrimiento o "discovery". Es importante conocer el objetivo marcado todo lo que se pueda. Internet es un lugar donde buena parte de lo que se haga, configure y publique queda expuesto y por esta razón, recopilar y conocer todos los detalles de lo que dispone una organización es fundamental para progresar en el pentest.

¿Es posible obtener información jugosa? La cierto es que sí. A continuación vamos a enumerar los elementos de interés que es posible obtener de estos archivos:
  • Usuarios del sistema.
  • Rutas internas que ayuden a conocer cómo se estructura el sistema de archivos y qué aplicaciones se ejecutan. Siguiendo un ejemplo real sobre el que se han realizado pruebas, en el caso del servidor de correo si se analiza la directiva sendmail_path es posible deducir que se realiza a través de la ruta C:\xampp\mailtodisk\mailtodisk.exe. Las rutas internas provocan fugas de información que puede ayudar al pentester a modelar su siguiente paso.
  • Direcciones de correo. Este documento puede aportar información sobre correos. Evidentemente no es la mejor vía en un pentesting para encontrar correos electrónicos pues para ello tenemos otras vías como son las de The harvester, Maltego o el propio Faast, pero sí puede resultar complementaria.
  • Módulos habilitados que posibiliten otros ataques. Esto es una característica que un pentester debe observar a conciencia. Este tipo de descubrimientos puede hacer que un pequeño descuido en la configuración de un servidor acabe convirtiéndose en el punto de inflexión por el que se accedió a datos relevantes de la organización.
  • El sistema operativo y versión que corre la máquina. Esto es importante para saber rápidamente si existen vulnerabilidades que puedan comprometer la seguridad del servidor.
  • Versiones de aplicaciones y servicios. La información que se puede obtener con este archivo es importante. Por ejemplo en las siguientes imágenes podemos comprobar que existe un MySQL en el puerto 3306 (detalle que se puede conocer también con un nmap sin demasiado esfuerzo); que la versión de OpenSSL es posible que sea vulnerable a HeartBleed (CVE-2014-0160); o que la versión de Python es la 2.7.

Ejemplo de información extraíble en un archivo phpinfo

En el caso de las directivas comentadas anteriormente, se puede concluir también que, por ejemplo, si safe_mode está deshabilitado podría llegarse a la ejecución de comandos desde un archivo php. Por otro lado la directiva display_errors en modo "on" significa que los mensajes de error de php se volcarían para cualquier usuario, por lo que el pentester puede así provocar fallos en busca de "leaks". Existen diversas directivas que, por ejemplo, son analizadas por Faast en busca de estos fallos, una vez descubierto un archivo PHP info. Un pequeño error en la configuración puede abrir cientos de puertas o vectores de ataque a un pentester.

Utilizando el servicio Faast y haciendo pruebas sobre nuestro sitio de pruebas demofaast se obtuvo la siguiente evidencia:

Ejemplo de conversación HTTP

Se puede ver una petición al servidor, una respuesta y parte del contenido que es la evidencia de que se está ante un PHP Info que provocará la fuga de información. Además, la herramienta se nutre de toda la información para seguir explorando las posibilidades que este tipo de fuga ha provocado.

Como curiosidad, recordar que Faast, además de detectar este archivo y "destriparlo" para avanzar en la investigación,  permite alertar sobre cualquier otro fichero sospechoso que pueda suponer un peligro para el servidor, como pueden ser la mayoría de shells documentadas que, por sus características, resultan identificables.

Pablo González
pablo.gonzalez@11paths.com

No hay comentarios:

Publicar un comentario en la entrada