A la hora de implementar servidores web, Apache sigue siendo la elección para la mayoría de los administradores. La razón es más que obvia; Apache se destaca por su estabilidad y facilidad a la hora de configurar el mismo. Sin embargo, siempre debe tenerse en mente que quizás una mala configuración podría derivar en un ataque exitoso por parte de un atacante. En esta ocasión profundizaremos sobre un caso común de mala configuración sobre Apache que puede derivar en un tipo de ataque conocido como HTTP Verb Tampering.
En muchos servidores web se suele definir ciertas secciones que contienen información privada o que no es accesible para el público. Los administradores suelen elegir cómo método de validación diferentes características. Una de las más utilizadas es a través de htaccess, donde la validación se realiza a través de este mecanismo. En la siguiente imagen puede apreciarse un archivo htaccess con las características mencionadas, limitando el acceso a usuarios autorizados.
Sin embargo, si se presta mayor atención, puede observarse que existe un error común en este tipo de configuraciones. El concepto de proteger información es correcto, pero en este escenario se está protegiendo un tipo de petición, formalmente las peticiones de tipo GET. De esta manera, cualquier persona que ingrese mediante un navegador a dicha sección, se le requerirá que inicie sesión para poder ver el contenido privado.
Los usuarios autorizados son aquellos que se encuentran definidos en el archivo especificado en el parámetro AuthUserFile en .htaccess. En este caso es el archivo .htpasswd. Es recomendable que este archivo se encuentre en un directorio no público, ya que también sería un riesgo de seguridad si estuviera en un directorio accesible.
Sin embargo, tal como se aclaró anteriormente, esta medida de seguridad se aplica sobre las peticiones del tipo GET. Pero, ¿qué sucedería si se realiza una petición del tipo POST?
La respuesta puede observarse en la imagen anterior. Se logra el acceso a la sección confidencial debido a que las reglas de .htaccess no aplican sobre las peticiones del tipo POST. En este caso, hubiera sido necesario aplicar las reglas a todos los tipos de peticiones y siempre considerando la inclusión del archivo de usuarios y claves (en esta caso .htpasswd) en una ubicación segura (por lo general se debe intentar evitar de ubicarlo en el mismo directorio que .htaccess). En la siguiente captura, puede observarse un archivo de configuración adecuado para esta situación, es decir, protegiendo la sección privada contra diferentes tipos de petición.
La finalidad de este post fue la demostración del alto impacto que puede tener una mala configuración sobre un sitio web, sobre todo cuando se trata de proteger información del acceso de personas no autorizadas.
Finalmente, en mi experiencia personal a nivel profesional, siempre he observado que los proyectos más sólidos, sobre todo desde el punto de vista de las configuraciones de las diferentes aplicaciones, surgen cuando se contempla la seguridad desde la concepción del mismo. Es por esto que recomiendo la lectura del estándar de seguridad de Apache desarrollado por el CIS, el cual contempla diferentes aspectos de la seguridad de un servidor web desde el punto de vista de las configuraciones a nivel de seguridad.
¡Nos vemos pronto!
Fernando Catoira
No hay comentarios.:
Publicar un comentario