Obtener Huella del Framework de Aplicación Web

  • Posted on: 13 January 2020
  • By: ReYDeS

Obtener la huella del Framework web es una tarea importante correspondiente al proceso de captura de información. El conocer el tipo de framework puede automáticamente proporcionar una gran ventaja si tal framework ha sido ya probado por un profesional en pruebas de penetración. No son únicamente las vulnerabilidades en versiones no parchadas, sino malas configuraciones específicas en el framewok, y una estructura de archivos conocida, lo cual hace importante un proceso para reconocer la huella.

Diferentes proveedores y versiones de frameworks son ampliamente utilizados. La información sobre estos ayuda significativamente en el proceso de pruebas, y también puede ayudar en cambiar el curso de la prueba. Tal información puede ser derivada por un cuidadoso análisis de ciertas ubicaciones comunes. Muchos de los frameworks web tienen diversos marcadores en estas locaciones, lo cual ayuda al atacante a detectarlos. Esto es básicamente lo hecho por las herramientas automáticas, buscan por un marcador desde una locación específica, y luego la comparan con una base de datos de firmas conocidas. Para una mejor precisión se utilizan generalmente varios marcadores.

Anotación: En el presente texto no se diferencia entre una Framework de Aplicación Web, y Sistema Gestor de Contenido. Esto se ha hecho así para sea conveniente obtener ambas huellas. Además ambas categorías están referidos como frameworks web.

Objetivos de la Prueba

Definir el tipo de framework web utilizado, de tal manera se tenga un mejor conocimiento de la metodologías para pruebas de seguridad.

Como Evaluar

Prueba de Caja Negra

Existen muchas locaciones comunes a mirar para poder definir el framework utilizado.

  • Cabeceras HTTP
  • Cookies
  • Código fuente HTML
  • Archivos y carpetas específicas
  • Extensiones de archivos
  • Mensajes de error

Cabeceras HTTP

La forma más básica para identificar un framework web es buscar en el campo “X-Powered-By” de la cabecera de respuesta HTTP. Muchas herramientas pueden ser utilizadas para obtener la huella. La más simple es la utilidad netcat.

Considerar la siguiente cabecera de respuesta HTTP.

Del campo “X-Powered-By”, se conoce el framework de aplicación web es probable sea PHP. Sin embargo, aunque esta perspectiva es simple y rápida, esta metodología no funciona en el 100% de los casos. Es posible fácilmente deshabilitar la cabecera “X-Powered-By” mediante una configuración adecuada. Existen muchas técnicas las cuales permiten a un sitio web ofuscar las cabeceras HTTP.

Algunas veces puede existir más de una cabecera HTTP, la cual apunte hacia un cierto framework web. Se podría ver por ejemplo una cabecera como la anterior, y una cabecera “X-Generator”, la cual apunte a otro framework utilizado como “Swiftlet”, lo cual podría ayudar al profesional en pruebas de penetración a expandir los vectores de ataque. Cuando se realice un reconocimiento de la huella, siempre se debe cuidadosamente inspeccionar cada cabecera HTTP por exposición de información.

Cookies

Otra manera similar y algo más fiable para determinar el framework web utilizado son las Cookies específicas a un framework.

Considerar la siguiente cabecera de respuesta:

La cookie de nombre “PHPSESSID” es automáticamente definida, lo cual proporciona información sobre el framework en uso. Las limitaciones son las mismas, es posible cambiar el nombre de la cookie.

Sin embargo estos cambios son menos probables comparados con los cambios hecho a la cabecera “X-Powered-By”, de tal manera esta perspectiva se considera más fiable.

Código fuente HTML

Esta técnica se basa en encontrar ciertos patrones en el código fuente de la página HTML. Frecuentemente se puede encontrar mucha información la cual ayuda al profesional en pruebas de penetración y hacking ético a reconocer rápidamente un framework web específico. Uno de los marcadores más comunes son los comentarios HTML, los cuales exponen directamente información del framework. Pueden ser encontrados rutas específicas a ciertos framework, enlaces hacia carpetas css o js específicas a un framework. Finalmente variables script específicas podrían también apuntar hacia un cierto framework.

Más frecuentemente tal información es puesta entre las etiquetas y , en etiquetas o al final de la página. Sin embargo, se recomienda verificar todo el documento, pues esto puede ser útil para otros propósitos, tales como inspección de otros comentarios útiles o campos ocultos. Algunas veces los desarrolladores web no tienen cuidado sobre ocultar información del framework utilizado. Siendo posible toparse con información muy específica.

Archivos y carpetas específicos

Los archivos y carpetas específicos son diferentes para cada framework. Se recomienda instalar el correspondiente framework durante una prueba de penetración, para poder tener un mejor conocimiento de cual es la infraestructura presentada, y cuales archivos podrían ser dejados en el servidor. Sin embargo, ya existen varias buenas listas de archivos, y un buen ejemplo son las listas de palabras de “FuzzDB”, conteniendo nombres de archivos o carpetas predecibles.

Extensiones de archivos

Una URL puede incluir extensiones de archivos. Las extensiones de los archivos pueden también ayudar a identificar la plataforma web o tecnología. Por ejemplo si se utiliza PHP.

Algunas extensiones web comunes y tecnologías:

  • php - PHP
  • aspx - Microsoft ASP.NET
  • jsp - Java Server pages

Frameworks Comunes

Cookies:

Framework y nombre de la cookie

Zope - zope3
CakePHP - cakephp
Kohana - kohanasession
Laravel - laravel_session

Código fuente HTML:

Marcadores generales

powered by
built upon
running

Marcadores específicos

Framework y palbraclave

Adobe ColdFusion - <! -- START headerTags.cfm>
Microsoft ASP.NET - __VIEWSTATE
ZK - < !-- ZK
Business Catalyst - <! – bC_OBNW -- >
Indexhibit – ndxz-studio

Herramientas

A continuación se presentan algunas herramientas conocidas. Existen también otras utilidades, como también herramientas para obtener la huella del framework.

WhatWeb

Es actualmente una de las mejores herramientas para obtener la huella. Está incluida por defecto en Kali Linux. Las correspondencias para las huellas se realizan con:

  • Cadenas de texto (sensible a mayúsculas)
  • Expresiones regulares
  • Consultas a bases de datos de Google Hacking (Conjunto limitado de palabras clave)
  • Hashes MD5
  • Reconocimiento de URL
  • Patrones de etiquetas HTML
  • Código Ruby personalizado para operaciones pasivas y agresivas

A continuación se presenta una imagen de la herramienta.

Wappalyzer

Wapplyzer es un plugin para Chrome y Firefox. Funciona únicamente encontrando coincidencias con expresiones regulares, y no se necesita hacer nada más a cargar una página web en el navegador. Funciona completamente a nivel del navegador, y proporciona resultados en la forma de iconos. Aunque algunas veces tiene falsos positivos, es muy útil para tener una noción de cuales tecnologías son utilizadas para construir un sitio web, inmediatamente después de cargar una página.

Una imagen de ejemplo se presenta a continuación.

Fuentes:

https://www.owasp.org/index.php/Fingerprint_Web_Application_Framework_(OTG-INFO-008)
https://www.php.net/manual/en/function.session-id.php
https://github.com/fuzzdb-project/fuzzdb
http://www.morningstarsecurity.com/research/whatweb
https://www.wappalyzer.com/

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1