Entorno vulnerable y puesta en escena

En esta entrada se explicará como instalar Apache, PHP y MySQL compilando el código fuente e instalando mediante binarios. También se expondrá con cierta síntesis ejecutar el instalador XAMPP.
Es interesante en un entorno vulnerable y virtualizado instalar estos servicios para hacer pruebas de concepto, ver que servicios y puertos están disponibles, realizar un escaneo, análisis de vulnerabilidades, realizar una fase de explotación, y finalmente escalar privilegios correspondiente a la post-explotación.

PARTE 1:
Apache HTTP Server, es un software de código abierto bajo una licencia del tipo Apache License, donde podemos modificar como desarrolladores el código libremente y generar una nueva variante.

En esta práctica se instalara un servidor web Apache en un Windows Server 2008 de forma binaria.
Para poder compilar el código fuente se necesita del entorno Visual Studio de Microsoft (Visual Studio VC11). Todos los archivos necesarios nos lo encontramos en esta página: Apache Lounge
Ejecutamos el ejecutable VC11:

Descomprimimos el archivo .zip, del binario Apache VC11 y copiamos la carpeta Apache24 a C:

La estructura de directorios de Apache esta formada de la siguiente manera:

  • bin: Archivos ejecutables.
  • cgi-bin: Donde se almacenan programas del lado del servidor.
  • conf: Archivos de configuración.
  • htdocs: Donde se almacenan las páginas web. 
  • icons: Directorio que contiene iconos que usa el servidor web para mostrar mensajes.
  • include: Archivos de cabecera del código fuente de Apache.
  • lib: Librerías de Apache.
  • logs: Archivos de conexiones y errores en el servidor web.
  • manual: Manual de Apache.
  • modules: Módulos del servidor. 

Para poder ejecutar e instalar primero el servicio httpd, habrá que hacer que el directorio bin de Apache forme parte del Path del sistema:

  1. Panel de control/Sistema y Seguridad/Sistema/Configuración avanzada del sistema.
  2. En propiedades del sistema elegimos la opción Variables de entorno.
  3. En variables de sistema elegimos Path y le damos a editar.
  4. Añadimos lo siguiente al final ;C:Apache24;C:Apache24bin.
  5. Por último ejecutamos desde la terminal path.

 

Vemos que se añadieron y gracias a esto podremos ejecutar el servicio desde cualquier directorio de la terminal.

Apache se instala como servicio de Windows. Se puede iniciar mediante terminal o desde Apache Monitor.
Una vez configurado la variable Path del sistema, ejecutamos lo siguiente desde el terminal con privilegios de administrador:

httpd -k install

Con el comando anterior instalamos el servidor Apache como servicio en Windows.
Para arrancar el servidor, detenerlo, reiniciarlo y desinstalarlo se ejecuta lo siguiente respectivamente:

httpd -k start

httpd -k stop

httpd -k restart

httpd -k uninstall


Las rutas donde se alojan las páginas web se encuentra en el directorio htdocs. Si ponemos en el navegador con el servicio activo lo siguiente, comprobamos que Apache fue instalado con éxito:

 

PHP, significa Hipertext Pre Processor y se trata del lenguaje de scripting del lado de servidor más popular. Este tipo de lenguaje va incrustado dentro de otro código.
Vamos a instalar PHP en el Windows Server 2008, previa instalación de Apache. Además es la opción compatible con la instalación de Apache mediante archivos binarios como hicimos anteriormente.
El archivo .zip podemos descargarlo desde Fuente, el VC11. En un entorno Windows, hay que descargar la versión Thread Safe, ya que este S.O es un entorno multihilo. En caso contrario y usar un servidor propietario de Microsoft como IIS, debemos elegir Non-Thread Safe.
De igual modo que en Apache es necesario antes tener instalado el Visual C++ Redistributable para Visual Studio 2012.
Descomprimimos:

Y copiamos la carpeta a C:

En necesario añadir el directorio php situado en C: y el directorio ext (dentro de php) al Path del sistema Windows. Se hará de igual modo que en apache:

Dentro de la carpeta php, renombramos el archivo php.ini-development a php.ini para que el archivo tenga una extensión correcta. Abrimos el archivo con un notepad:

Como se puede apreciar todas las lineas están comentadas con ; Basta con quitarlo de la linea para que aplique una configuración predeterminada.
Des-comentamos las siguientes lineas si existen, si no existen la añadimos:

  • display_errors=On  ;Muestra de errores
  • extension_dir=»./ext»  ;Ruta de las extensiones PHP
  • extension=php_mysql.dll  ;Habilita el soporte de MySQL
  • extension=php_mysqli.dll  

 

 

 

En el archivo de configuración de Apache httpd.conf añadir al final del documento, el módulo de PHP y el tipo de manejo de archivos PHP:

PHPIniDir «C:php» #Se indica la raíz de PHP
LoadModule php5_module «C:phpphp5apache2_4.dll» #Modulo de PHP
#Indicación del tipo MIME para el manejo de archivos PHP (Contenedor y directiva)
<FilesMatch .php$>
        SetHandler application/x-httpd-php
</FilesMatch>

Con esto ya tendríamos instalado PHP en nuestro servidor web Apache mediante binarios.


MySQL es un Sistema Gestor de Base de Datos perteneciente a la Capa de Negocio, y más usado actualmente de código libre GPL. La unión a Apache y PHP, hace el conjunto de un potente software con la capacidad de la creación de aplicaciones web.

  • Descargaremos en vez de un instalador, un archivo .zip que dentro contiene los binarios de MySQL. Es la mejor opción cuando somos desarrolladores y queremos modificar el código fuente. Nos lo podemos descargar de la siguiente página web.
  • Igual que antes, copiamos la carpeta al directorio raíz C:
  • Añadimos el directorio bin de MySQL al Path de Windows:

 

  • Instalamos MySQL como servicio desde la terminal de Windows mysqld –install. El nombre del servicio se llamara MySQL y se quedará de forma persistente en el sistema:

 

 

  •  Iniciamos el servicio de MySQL:

 

 

 

  • Y para finalizar ejecutamos una serie de comandos que se pueden apreciar a continuación en las imágenes, junto >mysql -u root para obtener el prompt mysql desde la terminal:

 

 

Con esto, tendríamos un entorno vulnerable si dejamos una mala configuración en las directivas del servidor Apache, contraseñas por defecto o bien conocidas, protocolos inseguros como FTP o Telnet, instalar versiones antiguas y vulnerables de los servicios que ofrece Apache o MySQL..etc. Podríamos crear nuestras propias maquinas vulnerables y realizar diversos ataques a la base de datos, al puerto 80 del servidor web Apache o ataques por diccionario; ya sea para la recolección de información o conseguir una shell del servidor.


PARTE 2:
XAMPP, Se trata de un software muy potente capaz de instalar Apache, MySQL, PHP, phpMyAdmin, Perl, servidor de subida de archivos FTP, servidor SMTP y otro de Java.
Es muy útil este tipo de software para personas que necesitan practicar con el lenguaje de programación PHP, o para aquellas que deseen crear bases de datos y ejecutar sentencias SQL. 
En esta practica bastante corta y asequible, se instalará XAMPP en Windows a través de un instalador.
La página web para poder instalar de forma intuitiva este software se encuentra aquí

 

La captura de pantalla esta en Ubuntu, simplemente para mostrar el ejecutable


Los pasos para instalar la versión del instalador es la siguiente:

  • Ejecutamos y seguimos los pasos del asistente. El segundo paso será elegir los componentes a instalar, no es necesario instalar todo pero si recomendable instalar Apache, PHP, MySQL, Perl y phpMyAdmin para gestionar de forma gráfica MySQL.
  • Posibilidad de integrar un CMS
  • Al finalizar la instalación es probable que salte el Firewall de Windows, y habrá que indicarle que de permiso de acceso a Apache. El directorio raíz del XAMPP se encontrara en C: 
  • Desde el cuadro de control de XAMPP tendremos que iniciar o detener Apache o MySQL, al igual que podremos o no, instalarlo como servicio. 

Un Windows Server 2008 y estos servicios instalados en un entorno vulnerable, tendréis infinidad de posibilidades para realizar vuestras PoC y aprender de forma virtualizada los distintos ataques a sistemas, aprovechando sus vulnerabilidades, los servicios instalados o una mala configuración del administrador.