Reconocimiento de Pentesting en Sitio Web Vulnerable

1. Introducción:

Este post es la resolución al ejercicio: https://github.com/breatheco-de/pentesting-reconnaissance-vulnerable-website-project.git

En el ámbito de la ciberseguridad, el pentesting (pruebas de penetración) desempeña un papel fundamental para identificar y mitigar vulnerabilidades en sistemas y aplicaciones antes de que sean explotadas por actores maliciosos. Este documento presenta un proyecto práctico de reconocimiento en un entorno web vulnerable, enfocado en evaluar la exposición de servicios, configuraciones inseguras y puntos críticos que podrían comprometer la integridad del sistema.

El informe detalla un caso realista donde se emplean herramientas ampliamente utilizadas en la industria, como Nmap para el escaneo de puertos, Nikto para la detección de vulnerabilidades en servidores web, y Gobuster y Dirb para la enumeración de directorios y archivos sensibles. La máquina objetivo, con dirección IP 10.0.2.6, reveló una amplia superficie de ataque, incluyendo servicios obsoletos (como Apache 2.2.8 y PHP 5.2.4), configuraciones deficientes (ausencia de cabeceras de seguridad y exposición de recursos críticos), y directorios sensibles accesibles públicamente (como phpMyAdmin y Drupal).

A lo largo del documento, se estructuran los hallazgos en etapas claras: desde la enumeración inicial de puertos y servicios hasta el análisis detallado de vulnerabilidades y la identificación de vectores de ataque potenciales. El objetivo final es proporcionar una base sólida para las fases posteriores de explotación y remediación, destacando la importancia de un enfoque proactivo en la seguridad informática.

Este proyecto no solo sirve como guía técnica para profesionales en ciberseguridad, sino también como un recordatorio crítico de los riesgos asociados con sistemas desactualizados y configuraciones negligentes. La corrección oportuna de estas vulnerabilidades es esencial para proteger los activos digitales y garantizar la confidencialidad, integridad y disponibilidad de los servicios en línea.

2. Resumen del Entorno

Máquina Víctima:

  • IP: 10.0.2.6

Herramientas Utilizadas:

  • Nmap: Para el escaneo de red y puertos.
  • Nikto: Para el escaneo de vulnerabilidades en el servidor web.
  • Gobuster: Para la enumeración de directorios y archivos en el servidor web.
  • Dirb: Para la enumeración adicional de directorios y archivos.
  • Nslookup: Para la búsqueda de información de dominio.
  • Whois: Para la obtención de información de registro del dominio.

 

3. Enumeración de servicios:

3.1 Escaneo de red:

Usar nmap para identificar la dirección IP de BeeBox VM.

nmap -sn 10.0.2.0/24
  • El recuadro azul muestra nuestra propia máquina atacante Kali.
  • El recuadro verde nos indica la IP y la MAC de nuestra máquina objetivo.

3.2 Identificación de servicios y puertos:

Realizar un escaneo de puertos y servicios con nmap.

nmap -sV -p- 10.0.2.6

Viendo el resultado de nmap se pueden ver los siguientes puertos:

1. Puertos relacionados con acceso remoto

  • 22/tcp (SSH): Permite la gestión remota segura de sistemas mediante comunicación cifrada. Aquí se usa OpenSSH 4.7p1.
  • 5901/tcp (VNC): Protocolo para acceso remoto a escritorios virtuales. Este utiliza la versión de protocolo 3.8.
  • 512/tcp (EXEC): Ejecuta comandos de forma remota (aunque es inseguro y anticuado).
  • 513/tcp (LOGIN): Usado para inicio de sesión remoto, aunque está obsoleto e inseguro.
  • 514/tcp (SHELL): Shell remoto anticuado y vulnerable; debe evitarse su uso.

2. Puertos relacionados con servicios web

  • 80/tcp (HTTP): Servidor web Apache HTTPD 2.2.8 para entregar contenido en la web.
  • 443/tcp (HTTPS): Versión segura de HTTP con cifrado SSL/TLS (Apache HTTPD con OpenSSL).
  • 8080/tcp (HTTP): Puerto alternativo HTTP, ejecutando Nginx 1.4.0.
  • 8443/tcp (HTTPS): Puerto alternativo HTTPS con Nginx 1.4.0.
  • 9080/tcp (HTTP): Otro servidor HTTP con Lighttpd 1.4.19.
  • 9443/tcp (HTTPS): Puerto seguro con Lighttpd 1.4.19.

3. Puertos relacionados con compartición de archivos

  • 21/tcp (FTP): Protocolo de transferencia de archivos, aquí con ProFTPD 1.3.1 (sin seguridad inherente).
  • 139/tcp y 445/tcp (NetBIOS-SSN): Protocolos para compartir archivos e impresoras en redes locales usando Samba.

4. Puertos relacionados con bases de datos

  • 3306/tcp (MySQL): Puerto estándar para el sistema de bases de datos relacional MySQL, versión 5.0.96.

5. Puertos relacionados con compilación y herramientas específicas

  • 3632/tcp (DISTCC): Permite la compilación distribuida de código, aquí usando distccd.
  • 6001/tcp (X11): Usado para conexiones gráficas remotas (aunque denegado en este caso).

6. Otros

  • 25/tcp (SMTP): Protocolo para el envío de correos electrónicos, manejado por Postfix smtpd.
  • 666/tcp (DOOM): Se usa generalmente para pruebas o simulaciones de juegos como DOOM.

4. Recolección de información sobre el dominio:

4.1 Uso de nslookup:

El comando nslookup no arrojó resultados para el dominio inverso asociado a la dirección IP 10.0.2.6. Esto se debe a la ausencia de registros PTR configurados en el servidor DNS del entorno de pruebas.

4.2 Uso de Whois:

La consulta whois no devolvió información pública, lo cual es normal en entornos de pruebas, ya que las direcciones IP utilizadas generalmente no están registradas en bases de datos públicas.

5. Escaneo de vulnerabilidades:

5.1 Uso de Nikto:

nikto -h 10.0.2.6

El escaneo de Nikto nos ha reportado las siguientes vulnerabilidades:

1. Problemas relacionados con software obsoleto

  • Servidor Apache/2.2.8: Esta versión está desactualizada, ya que la última versión del branch 2.x es la 2.2.34, y se recomienda actualizar al menos a Apache 2.4.54 o superior.
  • mod_ssl 2.2.8 y OpenSSL 0.9.8g: Estas versiones contienen vulnerabilidades conocidas, incluyendo un posible desbordamiento de buffer remoto que podría dar acceso a un shell remoto.
  • PHP/5.2.4-2ubuntu5: Esta versión es muy antigua y está fuera de soporte (EOL). Las versiones actuales comienzan en PHP 7.4.28 o PHP 8.1.5.
  • phpMyAdmin: Encontrada en múltiples directorios, esta herramienta para gestionar bases de datos debería estar protegida o limitada a hosts autorizados, ya que puede ser un vector crítico de ataque.

2. Falta de configuraciones de seguridad recomendadas

  • Ausencia de cabeceras de seguridad:
    • X-Frame-Options: Faltante, lo que deja al servidor vulnerable a ataques de clickjacking.
    • X-Content-Type-Options: No configurada, lo que podría permitir que navegadores interpreten el contenido de manera incorrecta, abriendo la puerta a potenciales ataques XSS.
  • Método HTTP TRACE habilitado: Esto sugiere que el servidor es vulnerable a ataques de Cross-Site Tracing (XST).
  • Apache MultiViews habilitado: Facilita ataques de fuerza bruta contra nombres de archivos (por ejemplo, archivos como index.bak fueron encontrados).

3. Exposición de archivos y directorios sensibles

  • Listado de directorios habilitado: Encontrado en /icons/, lo cual facilita la obtención de información sobre la estructura del servidor.
  • Archivos sensibles: Varios archivos predeterminados y sensibles como README, INSTALL.txt y #wp-config.php# fueron expuestos. Estos podrían contener información crítica.
  • Directorio /phpmyadmin/: Sin medidas de protección adecuadas, este directorio podría permitir el acceso no autorizado a bases de datos.

4. Vulnerabilidades específicas

  • CVE-2003-1418: Identificada en la cabecera ETag, relacionada con filtraciones de información del sistema de archivos.
  • Directorio /server-status: Expone información crítica sobre el estado y configuración del servidor, lo que debe ser restringido.

6. Fuerza bruta en directorios y archivos:

6.1 Uso de Gobuster:

gobuster dir -u http://10.0.2.6 -w /usr/share/seclists/Discovery/Web-Content/common.txt

Resultados del análisis con Gobuster

Archivos sensibles

  • /htpasswd, /htaccess, /hta (403 Forbidden): Estos archivos son utilizados para configuraciones críticas del servidor. Aunque el acceso está denegado, el hecho de que existan indica un posible punto de interés para atacantes avanzados que podrían intentar explotarlos mediante técnicas como fuerza bruta o acceso indebido.
  • /README (200 OK): Este archivo está expuesto y puede contener información sensible sobre la configuración o estructura del sistema. La exposición de este tipo de archivo podría facilitar un reconocimiento más profundo por parte de un atacante.

Directorio y archivo de política cross-domain

  • /crossdomain y /crossdomain.xml (200 OK): Estos archivos contienen políticas de acceso para dominios externos. Si están configurados con políticas permisivas (como el uso de comodines), pueden abrir la puerta a ataques de Cross-Site Scripting (XSS) o abuso de solicitudes cross-domain.

Directorios y aplicaciones identificados

  • /phpmyadmin (301 Moved Permanently): Indica la presencia de la herramienta phpMyAdmin, utilizada para gestionar bases de datos MySQL. Si no se protege adecuadamente, podría ser un vector crítico de ataque, permitiendo acceso no autorizado a bases de datos sensibles.
  • /drupal (301 Moved Permanently): Indica la existencia de un CMS Drupal. Si este software está desactualizado, podría contener vulnerabilidades críticas. Es importante identificar su versión para evaluar posibles riesgos.
  • /webdav (301 Moved Permanently): Este directorio habilita WebDAV, un protocolo para gestionar archivos en servidores remotos. Si no está configurado correctamente, puede permitir la lectura, escritura o eliminación no autorizadas.

Exposición de recursos del servidor

  • /server-status (200 OK): El acceso abierto a este recurso permite obtener información crítica sobre el estado del servidor Apache, incluidos los módulos habilitados, rutas y estadísticas en tiempo real. Es imprescindible restringir este acceso.

Configuraciones específicas y directorios adicionales

  • /index.html y /index (200 OK): Estos son archivos principales del servidor web. Aunque generalmente no representan un peligro directo, su contenido podría ayudar a mapear la estructura del servidor.
  • /evil (301 Moved Permanently): Un directorio aparentemente diseñado para pruebas o simulaciones. Es recomendable revisarlo manualmente para determinar su propósito y contenido.

6.2 Uso de dirb:

dirb http://10.0.2.6 /usr/share/seclists/Discovery/Wb-Content/common.txt

Nuevos Descubrimientos de DIRB:

  1. Archivos y Recursos Adicionales:
    • http://10.0.2.6/drupal/LICENSE (Código: 200, Tamaño: 18092 bytes)
    • http://10.0.2.6/drupal/README (Código: 200, Tamaño: 5382 bytes)
    • http://10.0.2.6/drupal/authorize (Código: 403, Tamaño: 2996 bytes)
    • http://10.0.2.6/drupal/cron (Código: 403, Tamaño: 7375 bytes)
    • http://10.0.2.6/drupal/index.php (Código: 200, Tamaño: 7699 bytes)
    • http://10.0.2.6/drupal/install (Código: 200, Tamaño: 3350 bytes)
    • http://10.0.2.6/drupal/robots (Código: 200, Tamaño: 1550 bytes)
    • http://10.0.2.6/drupal/robots.txt (Código: 200, Tamaño: 1550 bytes)
    • http://10.0.2.6/drupal/update (Código: 403, Tamaño: 4229 bytes)
    • http://10.0.2.6/drupal/web.config (Código: 200, Tamaño: 2178 bytes)
    • http://10.0.2.6/drupal/xmlrpc (Código: 200, Tamaño: 42 bytes)
    • http://10.0.2.6/drupal/xmlrpc.php (Código: 200, Tamaño: 42 bytes)
    • http://10.0.2.6/phpmyadmin/favicon.ico (Código: 200, Tamaño: 18902 bytes)
    • http://10.0.2.6/phpmyadmin/index.php (Código: 200, Tamaño: 8132 bytes)
    • http://10.0.2.6/phpmyadmin/phpinfo.php (Código: 200, Tamaño: 0 bytes)
  2. Subdirectorios Listables:
    • Drupal:
      • http://10.0.2.6/drupal/includes/
      • http://10.0.2.6/drupal/misc/
      • http://10.0.2.6/drupal/modules/
      • http://10.0.2.6/drupal/profiles/
      • http://10.0.2.6/drupal/scripts/
      • http://10.0.2.6/drupal/sites/
      • http://10.0.2.6/drupal/themes/
    • phpMyAdmin:
      • http://10.0.2.6/phpmyadmin/js/
      • http://10.0.2.6/phpmyadmin/lang/
      • http://10.0.2.6/phpmyadmin/libraries/
      • http://10.0.2.6/phpmyadmin/scripts/
      • http://10.0.2.6/phpmyadmin/themes/

Realmente con Gobuster se pueden llegar a conseguir los mismos resultados con hemos obtenido con dirb, añadiendo parámetros al comando, como el modo recursivo (-r) o añadir extensiones específicas con (-x).

7. Análisis y Conclusiones del Reconocimiento:

El entorno de la máquina víctima presenta múltiples vulnerabilidades y configuraciones inseguras que podrían ser explotadas en una fase posterior del pentesting. Los vectores de ataque identificados incluyen la explotación de software obsoleto, ataques de fuerza bruta, exposición de archivos y directorios sensibles, y posibles ataques de inyección y XSS. Es recomendable abordar estas vulnerabilidades en la siguiente fase del pentesting para evaluar el impacto y la posibilidad de explotación exitosa.

Comparte esta Publicación en Redes Sociales