Sta usando X-Real-IP come modo per verificare la sicurezza dell'accesso localhost?

1

Ho un'applicazione in ascolto sulla porta 5000 a cui è possibile accedere a Internet tramite nginx con questa configurazione:

upstream myapp {
    server 127.0.0.1:5000;
}
server {
    listen 80;
    location / {
        proxy_pass http://myapp;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
#...
}

Ora, supponendo che la porta 5000 sia accessibile solo dall'host locale, suppongo che tutte le comunicazioni esterne siano gestite da nginx, presumo che tutte le richieste che l'applicazione riceve quali non abbiano l'X-Real -IP header proviene da localhost.

Queste assunzioni sono errate? Potrebbe una persona senza accesso alla macchina accedere ancora all'applicazione Web senza autenticazione? Mi manca qualcosa?

Modifica: penso che potrei non presentare una domanda chiara qui. Probabilmente un mix tra la mia mancanza di conoscenza e me pensando di capire qualcosa di fondamentalmente sbagliato. Quindi, penso che potresti riassumere i miei dubbi nel rispondere a questo:

In questa situazione, posso supporre che se una richiesta alla mia web app non ha l'intestazione "X-Real-IP", allora proviene da localhost?

o il contrario:

Posso in qualche modo creare una richiesta che renderebbe nginx non impostato l'intestazione X-Real-IP, vista la configurazione sopra?

Cheers!

    
posta Alfro 10.08.2017 - 16:04
fonte

1 risposta

1

Stai già considerando che solo il traffico localhost può raggiungere la tua web app sulla porta 5000. Quindi, controllare qualsiasi intestazione che hai impostato in nginx non è il fattore che decide se questa è una richiesta da localhost - tutti sono, per definizione.

Se la tua domanda è piuttosto

can I assume that all that have the 'X-Real-IP' Header set come from 'nginx'"

la risposta sarebbe "no"; puoi facilmente arricciarlo su localhost.

Modifica per riflettere la modifica nella domanda:

Puoi presumere - con le tue presunzioni - che ogni richiesta sulla porta 5000 provenga da localhost, indipendentemente dalle intestazioni.

A partire da ora (cioè, per quanto ne so, non esiste alcun exploit per consentire che ciò accada a prescindere dalla configurazione), se quella configurazione è all la configurazione che c'è, non c'è modo di fare nginx inoltra una richiesta senza impostare l'intestazione.

    
risposta data 10.08.2017 - 16:26
fonte

Leggi altre domande sui tag