Spoofing 'localhost' para conectarse a un servidor que solo acepta conexiones de localhost

5

Me he estado preguntando si es posible o no falsificar a localhost para que cuando se realiza una conexión, se pueda engañar al servidor remoto para que piense que las conexiones provienen de localhost.

Por ejemplo, hay una configuración en MySQL que solo acepta conexiones de localhost. Como atacante externo, ¿podría ser posible falsificar a localhost para obtener acceso a este servidor? Por supuesto, no se toman otras medidas de seguridad.

    
pregunta Max00355 31.10.2015 - 17:53
fuente

1 respuesta

6

Este concepto (que generalmente se usa como parte de un ataque) a menudo se denomina "pivotante", como en "Usé la función de reenvío de solicitudes del servidor para pasar de Internet a localhost". No hay manera de "falsificar" el tráfico localhost a través de TCP; TCP requiere una dirección IP de origen válida para completar el protocolo de enlace. En UDP, puede administrarlo si la aplicación escuchaba en interfaces externas pero rechazaba cualquier conexión que no provenga del host local. Esto es diferente de solo escuchar en la interfaz de bucle de retorno, que es lo que normalmente haría si solo quería tráfico local, pero nunca he oído que se utilice ese enfoque, probablemente porque es una forma estúpida de configurar un servidor.

Hay varias formas en que puede girar una conexión de red a una red local (interna), o a localhost (que es esencialmente una red local extra pequeña). Tomemos un ejemplo trivial, ideado: la máquina que ejecuta el servidor solo para conexiones locales también está ejecutando un servidor proxy abierto expuesto a Internet. Usted se conecta al proxy y le dice que lo conecte a 127.0.0.1 en el puerto deseado. El servidor proxy envía esa solicitud en su nombre y se conecta al servidor restringido. El proxy luego transmite su tráfico al servidor restringido, y su tráfico vuelve a usted.

Hay una serie de ejemplos menos artificiales que pueden funcionar. Los ataques de entidad externa XML son probablemente los más comunes y se pueden usar para realizar varios tipos de solicitudes , como HTTP, HTTPS, FTP y posiblemente otros, a un host y puerto de su elección (en relación con el analizador XML vulnerable, que generalmente se encuentra en un servidor web, por lo que solicitar "localhost" en la XXE hará que el servidor web conectarse a sí mismo en el protocolo especificado en el puerto). Por lo general, esto no le permitirá obtener tráfico interactivo, pero es bueno para solicitudes simples y, por lo general, se puede realizar tan a menudo como se desee (esto también se puede usar para escanear puertos en una red interna para ciertos tipos de servidores). Cualquier cosa que permita que un programa externo haga que el servidor realice una solicitud arbitraria en nombre del usuario externo se puede abusar para enviar una solicitud a los servicios locales del servidor únicamente.

Otra opción que a veces puede ser relevante es usar este tipo de ataque para obtener privilegios en un host después de que lo haya comprometido y haya obtenido la ejecución de código arbitrario en un entorno de bajos privilegios. Imagina, por ejemplo, un servidor web de espacio aislado. Usted compromete el servidor y coloca un shell inverso en él, lo que le permite ejecutar código dentro de la caja de arena del servidor. A continuación, abre una conexión de red a otro servicio en el mismo servidor (pero fuera de la zona de pruebas del servidor web) que escucha en localhost pero que, por lo demás, no está autenticado. Si la zona de pruebas no le impide hacer esto y el servidor de destino expone directamente cualquier cosa que no se vea desde la zona de pruebas, simplemente ha ganado privilegios adicionales.

    
respondido por el CBHacking 31.10.2015 - 20:39
fuente

Lea otras preguntas en las etiquetas