Se ha detectado una vulnerabilidad (CVE-2022-31793) en el servidor HTTP muhttpd, utilizado principalmente en enrutadores y puntos de acceso, que permite a un atacante no autenticado cargar archivos arbitrarios, dependiendo de los permisos bajo los cuales se ejecuta el servidor HTTP (en muchos dispositivos, muhttpd se ejecuta con privilegios de root). Por ejemplo, un atacante puede acceder a archivos con contraseñas, configuraciones de acceso inalámbrico, parámetros de conexión con el proveedor y claves privadas.
El problema es causado por un error en el procesamiento de la ruta en la solicitud, lo que permite el acceso a archivos fuera del directorio raíz del servidor web. El ataque consiste en indicar al principio de la ruta cualquier carácter adicional que no sea un punto, una barra o un signo de interrogación. Por ejemplo, para cargar el archivo /etc/hosts, basta con enviar la solicitud «GET a/etc/hosts» o «GET a/etc/hosts» (printf «GET b/etc/hosts\n\n» | nc server port).
La razón de este comportamiento es que la apertura del archivo solicitado se realiza mediante el comando «open(&req->filename[1], O_RDONLY)» después de ejecutar la función chdir() para cambiar al directorio raíz. un servidor webIndicar &req->filename[1] provoca que se ignore el primer carácter de la ruta (los desarrolladores asumían que el primer carácter siempre sería «/»). Así, al solicitar «GET /etc/hosts», el servidor intentará abrir el archivo usando la ruta relativa «etc/hosts», pero si se indica un carácter adicional al inicio («GET a/etc/hosts»), la ruta subsiguiente se procesará completamente.
El problema se presenta desde la primera versión de muhttpd y se ha solucionado en la versión 1.1.7. Entre los dispositivos que utilizan muhttpd, se ha confirmado la existencia del problema en los enrutadores SaskTel y Arris. potencialmente, el problema también puede manifestarse en dispositivos fabricados por AT&T, Frontier y Windstream. Al restringir el acceso al puerto HTTP solo para la red interna, el ataque puede ser llevado a cabo desde la red externa utilizando la técnica de «DNS rebinding», que permite al abrir un usuario una determinada página en su navegador enviar una solicitud HTTP a un puerto de red no accesible directamente a través de Internet.
Fuente: opennet.ru
