Gli attacchi MITM sono possibili su loopback HTTP?

4

Ho un server web in esecuzione a example.com . Il server web esegue una richiesta lato server a example.com che risulta in un loopback, quindi la richiesta non passa mai sulla rete.

Questa richiesta è suscettibile a un attacco MITM? Se sì, come?

    
posta John Blackbourn 19.06.2014 - 00:15
fonte

2 risposte

5

Il problema è tutto in accedere al server e ottenere un adeguato livello di privilegio .

update : e ovviamente se hai un tale accesso, puoi probabilmente prendere il controllo direttamente dal "server" o dal "client", o da entrambi, oppure accedere segretamente ai loro stessi dati all'insaputa a loro. Non c'è bisogno di un uomo nel mezzo se sei il tipo interno .

Ma dì che hai root lì ... allora, sì, puoi montare un attacco MitM anche se non puoi usare altro che l'interfaccia di loopback per qualsiasi motivo, e non puoi altrimenti interferire con operazione del client o del server.

Tutto ciò di cui hai bisogno è lo ve calhost che duplica il suo indirizzo a qualcosa di utile, e che dice alla vittima che example.com esegue la mappatura a quell'indirizzo .

Esempio pratico che utilizza un servizio che ascolto sulla porta localhost 631 - cupsd. Un server web ascolta sulla porta 80, ma tutto il resto rimane lo stesso.

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)

Ora I non può ascoltare immediatamente sulla porta scelta poiché esiste già un processo legittimo:

# netcat -l 127.0.0.1 631 &
[1] 26264
netcat: Address already in use
[1]+  Exit 1                  netcat -l 127.0.0.1 631
#

Ma nulla mi impedisce di creare un'altra interfaccia di loopback (lo: 0 invece di lo) usando l'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

e dire al sistema che example.com è effettivamente 127.0.0.42 manipolando il file hosts (se il DNS avesse priorità, avrei modificato il suo file di zona) ...

... e ora posso ascoltare (in questo caso su una singola riga)

# netcat -l 127.0.0.42 631 &
[1] 26442

e se invio quella linea, la mia rete di ascolto riceve (e potrebbe rispondere):

# echo "Hello" | netcat 127.0.0.42 631
Hello
[1]+  Done                    netcat -l 127.0.0.42 631
#

Nulla ha viaggiato al di fuori dell'interfaccia di loopback ( tranne che ovviamente come sono dentro quella scatola se ha solo un'interfaccia di loopback? ), e se la connessione va a "esempio.com", il server non ha modo di sapere che la connessione viene dirottata.

Potrei provare e farlo anche senza aliasing, ma la procedura richiesta interromperà pesantemente le comunicazioni e potrebbe non funzionare sempre, o addirittura del tutto, dal momento che non posso facilmente impedire a client e server di sentirne uno un'altra.

(L'aliasing che ho fatto qui è solo una prova di concetto, e probabilmente causerebbe il caos lungo la linea - basti pensare che ora ho 127.0.0.1 e 127.0.0.42 sullo stesso "tronco" ed entrambi hanno / 8 mascheramento )

    
risposta data 19.06.2014 - 02:22
fonte
1

Supponendo che example.com si risolva effettivamente sul server, e non su un bilanciatore di carico, un terminatore SSL o altro componente hardware, allora no, non c'è MITM perché non c'è niente nel mezzo. Se puoi, utilizzare localhost potrebbe essere una soluzione migliore per assicurarti che la richiesta resti sempre locale, ma ciò potrebbe non essere possibile se i vhost basati sui nomi sono in uso.

    
risposta data 19.06.2014 - 00:32
fonte

Leggi altre domande sui tag