En el artículo anterior vimos cómo son las vulnerabilidades que aprovecha la técnica de Command Injection, en el ejemplo dijimos que el equipo donde estaba alojada la Web era un equipo Linux, pero… ¿Cómo podemos saber si el equipo donde está alojada o almacenada una Web es Linux, Windows u otro? Ahí es donde entra en juego una de las técnicas más importantes que un ciberdelicuente lleva a cabo, el Reconocimiento Web.

Artículo elaborado por José Arroyo Viana, administrador de sistemas y experto en ciberseguridad de Extra Software

CONTENIDOS

¿QUÉ ES?
EJEMPLO DE RECONOCIMIENTO WEB
RECONOCIMIENTO WEB SOBRE GESTORES DE CONTENIDOS
EJEMPLO DE RECONOCIMIENTO CON USO DE FUERZA BRUTA
SOLUCIÓN O MITIGACIÓN ANTE LAS TÉCNICAS DE RECONOCIMIENTO WEB
CONCLUSIÓN

¿Qué es?

El reconocimiento es una serie de técnicas que se realizan para recabar información sobre la víctima: página Web, sistema operativo, fuga de datos, datos públicos, etc.

Esta fase de reconocimiento es imprescindible para el atacante ya que le brinda información que le puede servir para realizar un ataque más efectivo.

En el artículo nos centraremos en el reconocimiento de la página Web.

Ejemplo de reconocimiento Web

Siguiendo con el ejemplo  del artículo anterior, sabemos que nuestro objetivo tiene una página Web, en este punto al atacante le interesaría obtener información sobre la tecnología con la que se ha realizado la Web, bajo que servidor está corriendo o que lenguaje de programación se ha utilizado.

Hay herramientas que nos pueden ayudar a extraer la mayoría de la información que hemos mencionado. Una de estas herramientas es WHATWEB.

Ejecutamos la herramienta WHATWEB y vemos en la siguiente imagen la información que es capaz de obtener:

  • Servidor Web sobre el que está corriendo la página y su versión: Apache 2.2.8
  • Sistema operativo del equipo donde está almacenada la página: Linux Ubuntu
  • Versión del lenguaje de programación PHP en el que está desarrollada la página: 5.2.4
whatweb

Nosotros ahora como atacantes podríamos hacer una simple búsqueda en Google para encontrar posibles vulnerabilidades relacionadas con la información que hemos obtenido, por ejemplo, vulnerabilidades que puedan afectar al servidor Web Apache 2.2.8.

Busqueda apache

También existen plugins para el navegador que nos permiten realizar este primer reconocimiento. Uno de los más conocidos es Wappalyzer que lo podemos instalar tanto en Chrome como en Firefox. Vemos un ejemplo de la información extraida con Wappalyzer en la siguiente imagen.

 

wappalyzer

Reconocimiento Web sobre Gestores de Contenidos

Si descubrimos que nuestra Web está realizada mediante un CMS o gestor de contenidos como puede ser WordPress, Joomla o Drupal, podemos usar herramientas ya existentes para realizar una enumeración sobre ellos.

Por ejemplo, en cuanto a WordPress la herramienta más conocida es WPScan, para Joomla tenemos Joomscan y para Drupal, Drupscan.

Centrándonos en WordPress por ser el CMS más usado, la herramienta WPScan nos permitiría entre otras cosas:

  • Hacer fuerza bruta contra el login de WordPress mediante usuarios y/o contraseñas aleatorios.
  • Enumerar todos los plugins que tenga vulnerables el gestor de contenidos.
  • Enumerar los usuarios existentes.
  • Obtener información sobre la Web.

Es importante saber que, aunque el gestor de contenidos esté actualizado podemos encontrar una vulnerabilidad en alguno de los plugins instalados e igualmente comprometer la página Web.

Un ejemplo de uso de WPScan sería el siguiente:

  • wpscan –url http://www.dominio.com -e vp,u
    • Con –url le indicamos la dirección de la página Web que queremos auditar
    • Con -e le indicamos que nos enumere la información de la página, en este caso le estamos indicando que nos enumere los plugins vulnerables con vn (vulnerable plugins) y los usuarios con u (users)
ping root

Como hemos visto, cada gestor de contenidos se puede enumerar con herramientas que atienden a estos gestores de contenidos, luego también existen herramientas genéricas que nos pueden servir para enumerar cualquier página Web, como por ejemplo Nikto, que es un escáner de vulnerabilidades Web que podemos usar contra cualquier tipo de página.

Ejemplo de reconocimiento con uso de fuerza bruta

Otra táctica en la enumeración o reconocimiento de la página Web es hacer fuerza bruta sobre los archivos o directorios de la página para intentar descubrir directorios o ficheros ocultos. A esta técnica se le conoce como Fuzing

Por ejemplo, sabemos que nuestra página es accesible a través de la URL http://10.0.2.4/dvwa/, detrás de esa URL pueden existir directorios que no están enlazados desde la propia página, pero si los conoces puedas llegar a ellos.

Un ejemplo lo tenemos en las páginas realizadas con WordPress que tienen un directorio para acceder al panel de administración de la página localizado en http://www.dominio.com/wp-admin/.

Para intentar descubrir estos directorios ocultos se utiliza un fichero llamado comúnmente diccionario, donde por cada línea hay una serie de nombres de directorios que les podemos pasar a una herramienta o incluso a un script hecho por nosotros y que vaya probando si existen cada uno de esos directorios y que nos reporte por pantalla o en un fichero los que encuentre.

Por ejemplo, tenemos un diccionario con 220.560 nombres de directorio, un ejemplo de una parte del diccionario sería el siguiente:

ping for free whoami
Le pasamos este diccionario a una herramienta que irá probando cada una de estas palabras detrás de la URL y nos indicará si existe el directorio o fichero. La consultará será de la siguiente forma: http://10.0.2.4/dvwa/palabra_del_diccionario.

Podemos ver como se han descubierto varios directorios o ficheros que pueden tener información sensible o acceso hasta una zona privada.

En el ejemplo hemos usado la herramienta WFUZZ, esta herramienta nos permite realizar el descubrimiento de ficheros o directorios ocultos (entre otras cosas) en la Web objetivo

Solución o mitigación ante las técnicas de reconocimiento Web

Hay distintas técnicas que podemos usar para ocultar la información que puede mostrar nuestra página Web, tanto del servidor que estemos usando como de las tecnologías que usamos para crearla. En los distintos gestores de contenidos también nos encontramos plugins o componentes que realizan esta función de ocultamiento.

Aunque tenemos que intentar mostrar la menor información posible, la única solución válida para evitar que nuestra web sea comprometida es tener todos los sistemas, servicios y componentes actualizados a la última versión. Si lo que tenemos es un CMS, no añadir ningún plugin que no sea completamente necesario, no instalar aquellos que no provengan de fuentes oficiales o que no tengan una política de actualizaciones frecuente. No importa si nuestro WordPress está actualizado a la última versión, si luego tenemos un plugin que no está actualizado y tiene alguna vulnerabilidad que pueda ser aprovechada.

También debemos asegurarnos que tanto la información privada como los accesos a paneles de información estén debidamente protegidos. Si es posible que los paneles de login para la administración de la Web no sean accesibles directamente.

Conclusión

Como hemos visto, existen varias técnicas de reconocimiento Web primero nos hemos centrado en las versiones tanto del servidor como de las tecnologías usadas para su desarrollo y posteriormente en recabar datos ocultos de la página. Todas estas técnicas son usadas por los atacantes en las fases previas de un ataque, la información recopilada aquí le será imprescindible para las fases posteriores del ataque y para conocer a la compañía.

En próximas publicaciones, veremos más ejemplos de técnicas en las que los atacantes utilizan vulnerabilidades en las paginas web a su favor y cómo protegernos de ellas.