Saltar a contenido

01.-Pruebas de recolección de información

Existen diversas pruebas que permiten recopilar información específica sobre los aplicativos a auditar y la infraestructura que los sustenta. Muchas de estas pruebas son similares a las aplicadas en las fases de reconocimiento y escaneo, pero en este caso están enfocadas en extraer datos del aplicativo web y su entorno.

A continuación, se describen las pruebas más comunes utilizadas en esta fase:

graph LR; %% Definición de estilos para mejorar la presentación classDef titulo fill:#4CAF50,stroke:#2E7D32,stroke-width:2px,color:white,font-weight:bold; classDef nodo fill:#E8F5E9,stroke:#66BB6A,stroke-width:1px,color:black; classDef subnodo fill:#FFF3E0,stroke:#FF9800,stroke-width:1px,color:black; %% Sección 1: Fuga de información en motores de búsqueda A[Fuga de información en motores de búsqueda]:::titulo --> A1[🔍 Obtener información utilizando técnicas pasivas de búsqueda de información en motores de búsqueda]:::nodo; A --> A2[🌐 Google, Bing, Censys, archive.org, pastebin, Shodan]:::subnodo; %% Sección 2: Fuga de información en objetos y recursos del aplicativo B[Fuga de información en objetos y recursos del aplicativo]:::titulo --> B1[📄 Información en metadatos]:::nodo; B --> B2[🛠 Información en ficheros de configuración]:::subnodo; B --> B3[🖥 Información en código del aplicativo enviado al cliente: HTML y JavaScript]:::subnodo; %% Sección 3: Identificar el servidor web C[Identificar el servidor web]:::titulo --> C1[🖥 Identificar tipo y versión del servidor web]:::nodo; C --> C2[📡 Análisis de la respuesta HTTP]:::subnodo; C --> C3[🛠 Uso de herramientas especializadas]:::subnodo; %% Sección 4: Identificar aplicativo web o framework D[Identificar aplicativo web o framework]:::titulo --> D1[⚙️ Identificar tipo y versión del servidor web]:::nodo; D --> D2[📡 Análisis de la respuesta HTTP]:::subnodo; D --> D3[🛠 Uso de herramientas especializadas]:::subnodo;

Fuga de información utilizando motores de búsqueda

Se obtiene información del aplicativo a través de motores de búsqueda públicos, utilizando técnicas de Google Hacking o Dorking. Algunos de los motores de búsqueda más relevantes son:

  • Google: Soporta operadores avanzados para búsquedas específicas de archivos, dominios y datos sensibles.
  • Bing: Permite realizar búsquedas basadas en direccionamiento IP.
  • DuckDuckGo: Privado y con soporte para operadores de búsqueda avanzados.
  • Shodan: No indexa páginas web, sino tecnologías y servicios expuestos en Internet (ejemplo: servidores, cámaras IP, bases de datos, etc.).
  • Censys: Similar a Shodan, enfocado en identificar dominios que comparten el mismo certificado digital o ciertos datos del certificado.
  • Archive.org: Permite consultar versiones antiguas de sitios web, lo que puede revelar configuraciones previas, tecnologías usadas y páginas eliminadas.

Fuga de información en metadatos, archivos de servidor y comentarios

Los metadatos de los archivos y el código fuente pueden contener información sensible:

  • Metadatos en documentos: Archivos ofimáticos (PDF, DOCX, XLSX) pueden contener nombres de usuario, versiones del software utilizado y otra información interna.
  • Comentarios en código fuente: Revisar comentarios en archivos HTML, JavaScript y CSS puede revelar credenciales, rutas ocultas o estructuras de la aplicación.
  • Archivo robots.txt: Es un archivo ubicado en la raíz del dominio que indica a los motores de búsqueda qué rutas no deben indexar (https://www.ejemplo.com/robots.txt). Puede contener rutas de acceso a paneles de administración o áreas restringidas de la aplicación.
...
<div class="table2">
    <div class="col1">1</div><div class="col2">Mary</div>
    <div class="col1">2</div><div class="col2">Peter</div>
    <div class="col1">3</div><div class="col2">Joe</div>
</div>

<!-- Query: SELECT id, name FROM app.users WHERE active='1' -->
...

Este fragmento de código HTML muestra una tabla con una lista de usuarios activos y, en un comentario HTML, se deja expuesta una consulta SQL que se ejecuta en la base de datos para obtener estos datos. Esto representa una fuga de información, ya que un atacante podría ver la consulta y usarla para explotar vulnerabilidades en la aplicación.

Por otro lado, ell archivo robots.txt es un fichero de control ubicado en la raíz de un sitio web que proporciona directivas a los motores de búsqueda sobre qué partes del sitio no deben ser indexadas. Aunque su propósito es evitar que ciertos directorios sean rastreados por los buscadores, en la práctica puede ser una fuente de información para un atacante.

  • Permite identificar rutas ocultas o no referenciadas en la aplicación, como paneles de administración o directorios sensibles.
  • Puede revelar endpoints restringidos que, si no están protegidos correctamente, pueden ser explotados por atacantes.
User-agent: *
Disallow: /admin
Disallow: /config
Disallow: /backup
Disallow: /private

En este ejemplo, un atacante podría intentar acceder manualmente a https://www.prueba.es/admin para comprobar si hay un acceso administrativo expuesto.

Recomendaciones de seguridad

  • Evitar listar rutas sensibles en el archivo robots.txt, ya que su contenido es público.
  • Configurar correctamente permisos y autenticación en directorios privados.
  • Utilizar cabeceras de seguridad y mecanismos como restricciones de IP o autenticación multifactor para accesos administrativos.
  • Monitorear el acceso a estos endpoints para detectar intentos no autorizados.

robots.txt es una herramienta útil para la gestión del SEO, pero si no se usa correctamente, puede ser un punto de fuga de información clave para un atacante.

Identificación del servidor web

Detectar el tipo de servidor web y su versión es un paso fundamental en una auditoría de seguridad, ya que permite identificar posibles vulnerabilidades asociadas con versiones específicas del software. Esta información se puede obtener de diversas maneras:

Cabecera HTTP "Server"

Al realizar una petición HTTP, algunos servidores incluyen en la respuesta el nombre y versión del software utilizado.
Ejemplo de respuesta HTTP con información del servidor:

HTTP/1.1 200 OK
Server: Apache/2.4.41 (Ubuntu)
Date: Tue, 20 Feb 2025 10:00:00 GMT
Content-Type: text/html; charset=UTF-8

En este caso, se puede identificar que el servidor web es Apache 2.4.41 en Ubuntu.

Herramientas de escaneo

Para obtener información más detallada sobre el servidor y los servicios en ejecución, se pueden utilizar herramientas especializadas:

🔹 Nmap Comando para detectar la versión del servidor web y otros servicios:

nmap -sV -p 80,443 <IP_DEL_SERVIDOR>

Salida típica:

PORT    STATE SERVICE  VERSION
80/tcp  open  http     Apache httpd 2.4.41 ((Ubuntu))
443/tcp open  https    nginx 1.18.0

🔹 Nessus Escáner de vulnerabilidades que analiza versiones desactualizadas de software y posibles fallos de seguridad.

🔹 WhatWeb Herramienta de fingerprinting para identificar tecnologías web utilizadas en un sitio:

whatweb <URL_DEL_SITIO>

Salida típica:

http://example.com [200 OK] Apache[2.4.41], PHP[7.4.3], WordPress[5.8]

Recomendaciones de seguridad

  • Ocultar la versión del servidor en las respuestas HTTP para evitar que un atacante pueda identificar vulnerabilidades asociadas.
  • Mantener actualizado el servidor y aplicar parches de seguridad.
  • Limitar la información expuesta en respuestas HTTP y configuraciones del servidor.
  • Monitorizar los intentos de fingerprinting para detectar posibles ataques en etapa de reconocimiento.

La identificación del servidor web es una fase clave en una auditoría de seguridad, ya que permite prever riesgos y fortalecer la defensa del sistema.

Identificación del aplicativo web o framework utilizado

Determinar si una aplicación web está basada en una plataforma conocida es fundamental para identificar vulnerabilidades y posibles vectores de ataque. Esto permite reconocer patrones comunes de seguridad y evaluar riesgos específicos.

¿Qué tipo de aplicaciones pueden identificarse?

Se pueden clasificar en varias categorías:

🔹 Gestores de contenido (CMS)

  • WordPress
  • Joomla
  • Drupal

🔹 Foros, wikis y blogs

  • phpBB (Foros)
  • MediaWiki (Wikis)
  • Ghost (Blogs)

🔹 Frameworks de desarrollo

  • Backend: Django (Python), Laravel (PHP), Ruby on Rails, Spring Boot (Java)
  • Frontend: React.js, Angular, Vue.js

Métodos de identificación

Para determinar qué tecnología o framework utiliza una aplicación web, se pueden emplear diferentes técnicas:

Análisis de cabeceras HTTP

Algunas aplicaciones incluyen en sus respuestas HTTP información sobre el framework utilizado. Ejemplo de respuesta HTTP que revela información:

HTTP/1.1 200 OK
Server: Apache/2.4.41 (Ubuntu)
X-Powered-By: PHP/7.4.3
X-Drupal-Cache: HIT

En este caso, la cabecera X-Drupal-Cache indica que el sitio está basado en Drupal.

Análisis del código fuente

En algunos casos, los comentarios HTML o estructuras de directorios pueden revelar información sobre la plataforma utilizada. Ejemplo de un sitio WordPress:

<meta name="generator" content="WordPress 5.8">
<link rel="stylesheet" href="wp-content/themes/twentytwenty/style.css">

Aquí, la presencia de wp-content y la metaetiqueta generator indican que el sitio usa WordPress.

Herramientas de detección

Para automatizar la identificación de tecnologías web, se pueden usar herramientas especializadas:

🔹 WhatWeb (Fingerprinting de tecnologías web)

whatweb <URL_DEL_SITIO>

Salida típica:

http://example.com [200 OK] WordPress[5.8], PHP[7.4.3], Apache[2.4.41]

🔹 Wappalyzer (Extensión de navegador para identificar tecnologías web)

  • Disponible para Chrome y Firefox.
  • Muestra detalles de frameworks, CMS, librerías JavaScript, servidores y más.

🔹 BuiltWith (Servicio online para identificar tecnologías utilizadas por un sitio web)

  • Proporciona información detallada sobre hosting, CMS, herramientas de análisis, etc.

🔹 CMSmap (Escáner de vulnerabilidades en CMS)

cmsmap http://example.com

Permite detectar la versión de WordPress, Joomla o Drupal y posibles vulnerabilidades.

Recomendaciones de seguridad

  • Ocultar metadatos y cabeceras sensibles que revelen tecnologías utilizadas.
  • Actualizar CMS y frameworks regularmente para prevenir ataques conocidos.
  • Utilizar WAF (Web Application Firewall) para mitigar ataques dirigidos a plataformas específicas.
  • Deshabilitar la enumeración de archivos y directorios en servidores web.

La identificación del aplicativo web es un paso clave en auditorías de seguridad, ya que permite anticiparse a vulnerabilidades comunes y fortalecer la protección del sistema.

Conclusión

La fase de recolección de información es fundamental para obtener datos relevantes sobre el aplicativo y su infraestructura. Identificar posibles filtraciones de datos y tecnologías en uso permite detectar vulnerabilidades antes de realizar pruebas más intrusivas, facilitando una auditoría más eficiente.