HTTP Basic Authentication, ¿es seguro?
En esta ocasión vengo a hablaros de HTTP Basic Authentication y su seguridad, o inseguridad. Quizás a muchos no es suenen estas palabras, pero quizás con una pequeña captura de pantalla, sepáis de qué vamos a hablar.
Efectivamente, se trata de un sistema de autenticación que se usa en sitios Web para proteger un sitio donde sólo pueden acceder usuarios autorizados, o al menos ese es el objetivo. A continuación veremos algunos ejemplos de por qué no es el mejor sistema para proteger un sitio.
Además de encontrarnos estos sistemas en sitios Web, es muy usual encontrarlos también en accesos a la administración Web de dispositivos de red, como pueden ser switches, puntos de acceso o incluso routers. ¿Habéis probado a poner la dirección IP de vuestro router en el navegador? Efectivamente, os saldrá una ventana similar donde se os solicita el nombre de usuario y contraseña para acceder a la administración Web de vuestro router.
Pero, ¿qué ocurre desde el punto de vista de la seguridad? ¿Y si un atacante intenta acceder a mi router o sitio protegido? ¿Utiliza algún sistema para no permitir intentos ilimitados de conexión? ¿Y si el tráfico es capturado?
En primer lugar tenemos que saber que a nivel de autentificación HTTP hay dos tipos: Basic Authentication y Digest Authenticacion. El primero de ellos es más simple y por lo tanto menos seguro. El sistema Digest es más seguro sobre todo a nivel de posible captura de tráfico, ya que el intercambio de hashes (claves) entre nuestro navegador y el servidor es más complejo.
El ejemplo que aquí vamos a ver está basado en Basic Authentication, que es el más utilizado, por ejemplo en la administración Web de dispositivos de red, como es el caso de nuestros routers.
De la imagen anterior, en la parte inferior, podemos observar que una simple captura de tráfico en la red del usuario que introduce los datos de acceso son fácilmente revelados, por lo tanto aquí tenemos la primera “inseguridad” y es que este sistema no está dotado de un sistema de cifrado fuerta. Se limita sólo a codificarle en Base64 lo cual a día de hoy es muy fácil de descodificar.
La segunda debilidad de este sistema es que al trabajar directamente a nivel del servidor Web, no controla el número de intentos de acceso que se producen, lo que puede dar lugar a que un atacante mediante herramientas de fuerza bruta pueda lanzar una gran cantidad de intentos combinando distintos usuarios y contraseñas hasta intentar conseguir las credenciales correctas.
Veamos cómo con un simple script de Nmap podemos lanzar este ataque y conseguir las credenciales correctas. En este caso, y tal y como hemos podido ver en la captura anterior son admin y 11111 como contraseña.
El script usado es http-brute que viene incluido con Nmap. Además de los argumentos necesarios como es el servidor o sitio Web y la URL (que por motivos de confidencialidad están ocultos) indico un fichero de posibles usuarios y un fichero de posibles contraseñas. Para esto último existe una herramienta para crear nuestro propio diccionario de contraseñas, lo veremos más adelante en otros artículos.
Se observa que el script ha descubiero el usuario y contraseña: admin – 11111
Y todo esto en tan sólo 1,61 segundos!!!
Como siempre, espero que el artículo haya sido de vuestro interés y que sirva para entender que si usamos sistemas de autenticación basados en HTTP Basic Authentication intentemos evitar introducir las credenciales en redes donde el tráfico pueda ser capturado por terceros y que las contraseñas sean fuertes ya que estos sistemas no cuenta con lockout de usuario (bloqueo por exceso de intentos).