Tunneling su una sottocartella HTTP?

3

Ho un firewall, che inoltra solo richieste HTTP e solo se la richiesta punta a qualcosa in una cartella /admin/ , quindi accetta solo richieste come questa:

http://www.anysite.com/admin/anyfile.file

Posso ignorarlo e visualizzare qualsiasi sito con un Proxy PHP (proxy web, usando questo: php-proxy.com ) in una cartella /admin su un server web, ma funziona solo tramite il browser web.

C'è un modo per creare qualsiasi tipo di tunnel (VPN, proxy SOCKS, ecc.) che può utilizzare questa cartella per instradare qualsiasi mezzo di traffico?

    
posta xdavidhu 15.10.2016 - 12:26
fonte

1 risposta

3

TL; DR quel proxy non consente il tunneling. E tu hai un firewall che analizza le richieste HTTP, probabilmente non permettendo il tunneling HTTP del tutto. Sei praticamente limitato a GET e POST.

Poiché è possibile risolvere DNS e VPN IPsec sulla porta 53 potrebbe essere una buona alternativa.

Il proxy php non è un proxy generale standard. In altre parole, non segue gli standard proxy (generali) (HTTP CONNECT o SOCKS), è semplicemente un proxy HTTP per le richieste GET e POST. Non è un proxy HTTP completo che implementa HTTP CONNECT che consentirebbe connessioni di tunneling e bypass di un firewall.

Nel il codice proxy php utilizza CURL, più esattamente curl_exec , come segue:

$result = @curl_exec($ch);

// there must have been an error if at this point
if(!$result){
    $error = sprintf('(%d) %s', curl_errno($ch), curl_error($ch));
    throw new \Exception($error);
}
// we have output waiting in the buffer?
$this->response->setContent($this->output_buffer);

// saves memory I would assume?
$this->output_buffer = null;

Anche se invii un CONNECT HTTP, il proxy ti restituirà la risposta e chiuderà la connessione, che non è il modo in cui funziona HTTP CONNECT.

Questo non vuol dire che CURL non possa funzionare con HTTP CONNECT, ma non tramite PHP curl_exec .

Tutto ciò che ha detto. Hai un firewall stateful che analizza le intestazioni HTTP (dato che consente solo /admin/ ). Dubito strongmente che il firewall ti consenta di inviare un CONNECT HTTP in primo luogo. In altre parole, se il firewall lo rifiuta (notare l'errore):

GET /typo-in-amdin/somehting HTTP/1.1

Quindi non credo che consentirà:

CONNECT /admin/somewhere HTTP/1.1

Dal momento che fallirebbe sulla stessa corrispondenza regolare. E dal momento che il firewall consente solo HTTP (e lo analizza) non è possibile utilizzare altri protocolli, ad es. VPN su posrt 80.

Nota aggiuntiva (più ottimistica)

Una cosa che mi colpisce è che puoi risolvere il DNS. Pertanto il firewall deve consentire i pacchetti UDP sulla porta 53.

E, a meno che non si utilizzi un server DNS interno (e quindi la risoluzione DNS non passa attraverso il firewall), è possibile aggirare la limitazione dell'intestazione HTTP eseguendo una VPN in modalità udp (IPsec) e "connetti" a porta 53. Questo tunnel il tuo traffico e guarderà al firewall come richieste e risposte DNS.

    
risposta data 15.10.2016 - 14:26
fonte

Leggi altre domande sui tag