← Volver al inicio

Metasploitable 2 - Hardening Servicio WEB


banner

Este es un nuevo proyecto de Hardening para el laboratorio Metasploitable2. Este laboratorio es conocido por tener múltiples vulnerabilidades que como atacante podemos sacar provecho y comprometer la máquina. Pero esta vez nos pondrémos en los zapatos del equipo defensivo y aplicaremos configuraciones correctas para volver Metasploitable 2 una máquina segura.

Los objetivos del proyecto serán:

  • Reducir la superficie de ataque.
  • Corregir fallas de configuración.
  • Implementar contramedidas.
  • Validar la postura de seguridad.

Metodología:

  • Inspección y validación de la vulnerabilidad. Remediación (Hardening).
  • Validación de seguridad.
  • Esta máquina tiene multiples puertos y vulnerabilidades habilitados.
  • Es por eso que iremos resolviendolas por servicios por separado.

Servicio Web

web

Llegamos al servicio WEB en el puerto 80. Aquí nmap nos encontró la siguiente información.

web

web

Desde la fase de reconocimiento podemos ver información crítica, como por ejemplo la versión del server Apache/2.2.8 (Ubuntu) DAV/2

web

o rutas de directorios que podemos ver directamente desde el navegador.

web

En este caso, para cerrarle las ventanas a este reconocimiento masivo, vamos a ocultar los Banner informativos, deshabilitar el listado de directorios y ocultar la cabecera PHP.

Ocultar Banner : El archivo de configuración de apache se encuentra en la ruta /etc/apache2/apache2.conf. Aquí deberemos agregar dos líneas de directivas al final del archivo: - ServerTokens Prod - ServerSignature Off

web

Deshabilitar el Listado de Directorios: Para realizar esto, debemos modificar la línea desde Options quitándole la palabra Indexes o poniéndole el símbolo menos - por delante, para prohibirle a Apache listar archivos cuando falte un Index. El archivo de configuración está en: vim /etc/apache2/sites-available/default

web

Nmap también nos reportó que los directorios /doc/ y /dav/ también listaban archivos de forma vulnerable. Para estos debemos repetir el procedimiento.

web

Guía de Explotación servicio WEB

Aquí nos encontramos con el primer inconveniente..

Las aplicaciones web expuestas en esta máquina representan un problema crítico porque, aunque blindemos la infraestructura de Apache, un atacante aún puede explotar el código vulnerable de estas herramientas para tomar el control del servidor (por ejemplo, mediante inyecciones SQL, subida de archivos maliciosos o RCE).

La mejor opción para este caso, es aplicar un control de acceso a la red a nivel de servidor web y no que simplemente esté accesible para todo el mundo.

## Contramedida ##

Apache nos permite aplicar restricciones de acceso por carpetas específicas utilizando un módulo llamado authz.

La ruta del archivo que vamos a modificar se encuentra en: etc/apache2/sites-available/default

Bajaremos hasta la etiqueta </VirtualHost> para inyectar las restricciones para las rutas expuestas.

<Directory /var/www/phpMyAdmin/>
		Order Deny,Allow 
		Deny from all Allow from 127.0.0.1 
</Directory>
		 
<Directory /var/www/tikiwiki/> 
		Order Deny,Allow 
		Deny from all Allow from 127.0.0.1 
</Directory> 
		
<Directory /usr/share/doc/>
		 Order Deny,Allow
		 Deny from all Allow from 127.0.0.1 
</Directory>

<Directory /var/www/dvwa/>
		 Order Deny,Allow
		 Deny from all
  	  	 Allow from 127.0.0.1
</Directory>

<Directory /var/www/mutillidae/>
		 Order Deny,Allow
  		 Deny from all
		 Allow from 127.0.0.1
</Directory>

y modificamos las líneas de Allow from all por Allow from 127.0.0.1

web web

Ocultar la cabecera PHP: Para ocultar la cabecera PHP debemos buscar la directiva expose_php y cambiamos su estado a Off en el archivo de configuración que se encuentra en la ruta/etc/php5/apache2/php.ini

web

También necesitamos agregar una directiva en el archivo

/etc/apache2/sites-available/default

Donde tendremos que agregar:

Header always unset X-Powered-By

web

Con esto el servidor Apache aplicara un filtro de censura a nivel de red justo en la salida del servidor.

Quitar el listado de la carpeta /icons/: Apache suele preconfigurar la carpeta de iconos en un archivo global de alias independientes. Este archivo se encuentra en /etc/apache2/mods-available/alias.conf y al igual que en las directivas, agregamos el signo menos - antes de Indexes Multiviews

web

Archivo phpinfo.php: En un entorno real la mejor práctica es eliminar por completo este archivo. Este solo sirve para desarrollo y, si un atacante lo encuentra, obtendrá una radiografía completa de la configuración del servidor, rutas internas y extensiones.

web

reiniciamos el servicio para aplicar las nuevas configuraciones /etc/init.d/apache2 restart

web
web web

Con estos ajustes la máquina queda en un estado de fortificación aceptable. Nadie en la red podrá interactuar con las aplicaciones web a menos que tenga acceso vía SSH con credenciales válidas para tunelizar el tráfico.