martes, octubre 11, 2011

Troyanizando un servidor Apache con mod_rootme

mod_rootme es un módulo para Apache destinado a la post-explotación de servidores una vez se ha obtenido acceso como root al sistema. El funcionamiento de este módulo se basa en escuchar las peticiones HTTP que el servidor recibe y, cuando detecta la palabra clave ‘GET root’, establece una comunicación con una interfaz shell que corre con privilegios de root.

Desafortunadamente el modulo mod_rootme no está continuado, por lo que puede que nos encontremos con algunos errores a la hora de cargarlo en un versión actual de Apache. A continuación veremos que ficheros y que líneas debemos modificar para poder cargar este módulo en la versión de Apache que tengamos instalada.

El fichero httpd20.h y httpd13.h, utilizados para versiones de Apache 2.0 y 1.3 respectivamente, están las definiciones ‘MODULE_MAGIC_MUMBER_MAJOR’ y ‘MODULE_MAGIC_COOKIE’. Son estas dos líneas las que deberemos modificar con los valores de la versión de Apache que queremos troyanizar.

Figura 1: Configurando mod_rootme

Una forma sencilla de averiguar estos valores es compilar el modulo con el comando ‘make linux’ - o el sistema operativo necesario - y copiar el binario generado - mod_rootme2.so - a ‘/usr/lib/apache2/modules/mod_rootme2.so’.

Una vez se haya realizado este paso, es necesario indicar en qué Apache se quiere hacer uso de este módulo. Para ello basta con añadir la línea ‘LoadModule rootme2_module /usr/lib/apache2/modules/mod_rootme2.so’ al fichero de configuración de Apache.

Ahora hay que tratar de cargarlo con el comando ‘/etc/init.d/apache2 reload’. Si las definiciones del fichero httpd20.h no coinciden se mostrará un mensaje de error indicando el valor de la definición actual, y el valor que debemos establecer.

Figura 2: Averiguando los valores de las definiciones

Bastará con editar el fichero con la definición que se esperaba  - 41503232 en este caso - , compilarlo y volver a copiar el binario generado en ‘/usr/lib/apache2/modules/mod_rootme2.so’. Si todos los pasos se han realizado correctamente, ya podemos conectarnos al servidor web y enviar la palabra clave ‘GET root’ o ‘GET /secret’ (en este caso) para la obtención del intérprete de comandos como root.

Figura 3: Obteniendo la shell root con mod_rootme

Autor: Manu "The Sur", Pentester de Informática 64

3 comentarios:

Ole dijo...
Este comentario ha sido eliminado por el autor.
Ole dijo...

Manuuuuu, deja de usar nano! xD.

Por cierto, una cosa que me he fijado, pero que tampoco estoy por probar ahora mismo. Me he fijado que la "signature" de Apache, la que necesitas conocer para la MAGIC_COOKIE del modulo, "curiosamente" ese numero hexadecimal se parece mucho a esto:

0x41503232 == "AP22"
0x41503230 == "AP20"

Lo que a mi me parece que sea mas o menos "APACHE 2.2" o "APACHE 2.0".

Si esto coincide, con un apache2 --version te ahorras algun trabajo

Anónimo dijo...

quiero algo así para un IIS, please.

Entradas populares