martes, diciembre 13, 2011

Hacking Remote Applications: Escaneando la red con Connection Strings en Excel (I de III)

**************************************************************************************************
- Escaneando la red con Connection Strings en Excel (III de III)
Autores: Juan Garrido "Silverhack" & Chema Alonso
**************************************************************************************************

En el artículo anterior vimos cómo era posible utilizar Excel para, por medio del poder de VBA, ejecutar comandos en el sistema en el servidor donde estaba corriendo la aplicación de Terminal Services o Citrix. Por otro lado, si alguien aplica la política de Deshabilitar VBA en todo Microsoft Office Applications, entonces no se podrá hacer uso de todo el arsenal de trucos que vimos para ejecutar los comandos con VBA. Sin embargo, Excel sigue siendo una poderosa herramienta y podemos utilizarla para cosas impresionantes, como por ejemplo escanear la red interna.

Supongamos un Excel fortificado en un servidor Citrix o Terminal Services con VBA deshabilitado a nivel total de Microsoft Office. En cualquier caso, este servidor se encuentra en la DMZ y está detrás del firewall, por lo que las políticas de filtrado de fuera a dentro de la organización en las reglas no se le aplican, lo que nos abre un abanico de posibilidades.

Conexiones a fuentes de datos

Excel tiene la característica de poder importar datos desde casi cualquier fuente de datos, incluido, como no Microsoft SQL Server u Oracle. Así, sin necesidad de tener soporte para VBA se puede acceder al importador de datos de Excel.

Figura 1: Importador de datos en Excel. No necesita soporte VBA.

Descubrimiento de servidores de bases de datos internas

Uno de los problemas clásicos es descubrir los servidores internos con bases de datos a los que conectarse. Para ello, podemos utilizar varias aproximaciones, pero para no hacer este artículo algo enorme que explique todas las posibilidades, podríamos usar FOCA, que mira muchas las posibilidades de intentar reconocer los nombres y roles internos de la organización o usar simplemente el truco de buscar roles en servidores con Robtex.

Figura 2: Descubrimiento de servidores por medio de Active Directory

Sin embargo, como ya vimos en el artículo de Jailbreaking, una de las posibilidades es consultar el Active Directory si la máquina está conectada a él. Así, en este ejemplo se puede ver cómo entre los servidores de Demo de Citrix, hay un servidor que tiene muchas posibilidades de contener una base de datos SQL en él.

Autenticación Integrada

Por supuesto, como ya vimos en el artículo de los Connection String Attacks en aplicaciones web, las cadenas de conexión permiten la autenticación integrada con la cuenta del sistema, es decir, la cuenta de Citrix o Terminal Services que hemos utilizado en la conexión. Esto nos permitiría, sin necesidad de conocer la password del usuario de Citrix - que como ya vimos va cifrada con un sistema no crackeable - conectarnos a una base de datos local en el equipo, o interna en la la red de la organización, usando la cuenta del sistema. 

Figura 3: Conexión con autenticación integrada.

Al estar dentro de la red, no tenemos la necesidad ni de que el servidor esté publicado en Internet, ya que es una conexión en red local.

Conectando: 3, 2, 1...

Así, para extraer datos de ese servidor de base de datos solo habría que terminar el asistente, seleccionando la opción de autenticación integrada, para obtener un:

Figura 4: Usuario no permitido en este servidor de base de datos Microsoft SQL Server

¡Uy! Casi lo conseguimos con ese servidor, pero no ha habido suerte... ¿lo probamos con alguno otro?

**************************************************************************************************
**************************************************************************************************

2 comentarios: