El problema está en acceder al servidor y obtener un nivel de privilegio adecuado .
actualización : y, por supuesto, si tiene dicho acceso, probablemente pueda tomar el control directamente del "servidor" o del "cliente", o de ambos, o acceder de forma encubierta a sus mismos datos sin saberlo. a ellos No hay necesidad de un hombre en el medio si eres el hombre dentro .
Pero digamos que tiene root allí ... entonces, sí, puede montar un ataque MitM incluso si no puede usar nada más que la interfaz de bucle de retorno por cualquier motivo, y no puede interferir de otro modo Operación del cliente o del servidor.
Todo lo que necesita es ve calhost duplicando su dirección en algo utilizable, y le dicen a la víctima que example.com se asigna a esa dirección .
Ejemplo práctico utilizando un servicio que escucho en el puerto localhost 631 - cupsd. Un servidor web escucharía en el puerto 80, pero todo lo demás sigue igual.
netstat -napo | grep LISTEN | grep -F 127.0.0.1
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1321/cupsd off (0.00/0/0)
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1721/named off (0.00/0/0)
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1721/named off (0.00/0/0)
Ahora no puedo escuchar de inmediato en el puerto elegido porque ya hay un proceso legítimo:
# netcat -l 127.0.0.1 631 &
[1] 26264
netcat: Address already in use
[1]+ Exit 1 netcat -l 127.0.0.1 631
#
Pero nada me impide que cree otra interfaz de bucle invertido (lo: 0 en lugar de lo) usando aliasing ...
# ifconfig lo:0 127.0.0.42
# ifconfig lo:0
lo:0 Link encap:Local Loopback
inet addr:127.0.0.42 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
y le digo al sistema que example.com
es de hecho 127.0.0.42 al manipular el archivo de hosts (si el DNS tuviera prioridad, modificaría su archivo de zona) ...
... y ahora puedo escuchar (en este caso, una sola línea)
# netcat -l 127.0.0.42 631 &
[1] 26442
y si envío esa línea, mi netcat escucha recibe (y podría responder):
# echo "Hello" | netcat 127.0.0.42 631
Hello
[1]+ Done netcat -l 127.0.0.42 631
#
Nada ha salido de la interfaz de bucle invertido (, excepto que, por supuesto, ¿cómo estoy dentro de ese cuadro si solo tiene una interfaz de bucle invertido? ), y si la conexión va a "example.com", el servidor no tiene forma de saber que la conexión está siendo secuestrada.
Podría intentar y hacer esto incluso sin crear un alias, pero el procedimiento requerido interrumpiría mucho las comunicaciones y podría no funcionar siempre, o incluso en absoluto, ya que no puedo evitar que el cliente y el servidor escuchen una. otro.
(El alias que hice aquí es solo una prueba de concepto, y probablemente causará estragos en la línea, solo considere que ahora tengo 127.0.0.1 y 127.0.0.42 en el mismo "troncal" y ambos tienen / 8 enmascaramiento )