Analytics

martes, 19 de diciembre de 2023

Más allá del error



En este artículo hablaremos de la gestión de errores internos del servidor web, que suelen ser una respuesta común cuando ocurre algún comportamiento anormal en el host o servicio, pero el servidor no puede determinar la causa exacta del problema.

Estos fallos suelen tener bastante importancia y pueden ser de gran ayuda para un ciberatacante ya que permiten obtener más información sobre su objetivo y preparar mejor su ataque.

Estos errores se producen por configuraciones incorrectas en el servidor, por ejemplo, una mala configuración en el archivo .htaccess podría ocasionar una fuga de información exponiendo el listado de directorios, lo que permitiría ver todos los archivos y carpetas dentro de un directorio.

Si tenemos esta línea configurada de esta manera en nuestro .htaccess “Options +Indexes” tendríamos una vulnerabilidad que es directory listing (listado de directorios).

Como ejemplo: (Apache .htaccess mal configurado)

Directory listing

Se produce cuando un servidor web recibe una petición HTTP o HTTPS a una carpeta y esta no tiene un archivo por defecto entonces el servidor web devuelve un listado de todos los archivos que contiene la carpeta.

¿Cómo podemos solucionarlo?: Deberíamos configurar un menos (-) delante a Indexes para desactivar el listado de directorios, por ejemplo: Options -Indexes

También hay otro tipo de errores de código que pueden deberse a un simple error de sintaxis, un bucle infinito o una llamada a función faltante.

Existen otros fallos internos que se originan por la asignación de permisos incorrectos: El servidor puede devolver un error interno si los permisos no están configurados correctamente.

Imaginemos que el servidor web no tiene permiso para acceder a la carpeta que contiene las imágenes del sitio. Al intentar cargar esas imágenes, esto podría generar un mensaje de error.

HTTP 404 Error

Otro de los errores muy típicos es el "error 404" que es un código de estado HTTP enviado desde el servidor web al navegador indicando por ejemplo que no se pudo acceder al recurso solicitado. Esto se puede dar cuando vamos a buscar una página que no existe, ingresamos un carácter que no le gusta o incluso cuando la página fue movida a otro sitio. Esto conlleva a posibles fugas de información.

Un claro ejemplo es el error 404 Not found, que ocurre en el momento en el que intentas visitar una web en particular y el servidor con el que se está comunicando no la encuentra.

El código HTML significa:

  • 4 (error del cliente): es decir, el error fue causado por quien solicitó la página al servidor;
  • 04 (no encontrado): no se pudo completar la solicitud porque no se encontró el documento HTML.

Ej:  Aquí vemos como el hecho de introducir una simple comilla nos revela la IP interna y la versión del servidor.













Otro ejemplo sería introducir algún texto que no le guste o que no se espere la aplicación y nos devuelva un error el cual nos puede ayudar a saber si la aplicación podría ser vulnerable a ciertos ataques, como en este caso SQL injection.



¿Como se puede corregir esto?

  • Podríamos crear una página personalizada y mostrar un error genérico para no revelar información sensible sobre la plataforma o estructura de nuestra aplicación.
  • Otro método recomendable, sería el utilizar las redirecciones controladas. Por ejemplo, cuando suceda un error se puede devolver al usuario a una página de inicio o algún otro recurso especificado del sitio.

Existen herramientas que ayudan a buscar este tipo de errores para posteriormente los podamos arreglar.

Ej: Google Search Console, Dead Link Checker, W3C Link Checker

Algunos gestores de contenidos como WordPress, Drupal, Joomla pueden crear páginas por defecto para el error 404 y personalizarlas si queremos.

Si nuestra web está basada solo en HTML, PHP u otro lenguaje habría que generar una página de error a través del archivo .htaccess.

Un enlace donde explican cómo crearlo de manera sencilla es el siguiente:
https://www.sistrix.es/preguntale-a-sistrix/optimizacion-onpage/codigo-de-estado-http/4xx-client-error-404-pagina-de-error/trasmitir-correctamente-un-codigo-de-estado-htpp-404-en-una-pagina-de-error/

HTTP 405 Error

Luego está el error 405 (Method Not Allowed / Método No Permitido) que indica que el servidor ha recibido nuestra solicitud, pero el recurso que estamos solicitando no es compatible con el método de la solicitud. Para que se entienda podríamos decir que esto sucede cuando el servidor donde se aloja un sitio web ha recibido una petición de un navegador (un usuario que visita una página), pero el servidor rechaza el método HTTP provocando así que el visitante, que realiza la petición, no pueda acceder a la misma.

Error típico 405 Not Allowed

¿Cómo solucionar el Error 405?

  • Configuración correcta y segura del .htaccess.
  • Habitar únicamente los métodos HTTP necesarios (GET, POST, PUT, DELETE, HEAD y OPTIONS).
  • Si es un WordPress y hemos hecho una actualización nueva revertirla.
  • Si es WordPress debemos probar el eliminar los plugins ya que no es aconsejable instalar Plugins sin que se haya verificado de que se trata de una versión sin vulnerabilidades.
  • Revisar el WAF por si está bloqueando algún acceso.
  • Explorar los registros del lado del servidor y revisar los registros A para ver si nuestro dominio está configurado correctamente.
  • Revisar los permisos de configuración de control de acceso y revisar también las modificaciones de la base de datos.

Diferencia entre los métodos 404 y 405

Aquí os dejo una URL donde podéis revisar las diferencias entre los principales métodos HTTP que son el GET y el POST.
https://www.guru99.com/difference-get-post-http.html



Autor: Héctor Berrocal - CEH, MCP, eJPT, ITILF, CCNA
Dpto. de Auditoría