¿Haciendo un túnel a través de una subcarpeta HTTP?

3

Tengo un firewall, que solo reenvía las solicitudes HTTP, y solo si la solicitud apunta a algo en una carpeta /admin/ , por lo tanto, solo permite solicitudes como esta:

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

Puedo omitir esto y ver cualquier sitio con un Proxy PHP (proxy web, usando esto: php-proxy.com ) en una carpeta /admin en un servidor web, pero solo funciona a través del navegador web.

¿Hay alguna forma de crear cualquier tipo de túnel (VPN, proxy SOCKS, etc.) que pueda usar esta carpeta para enrutar cualquier canal de tráfico?

    
pregunta xdavidhu 15.10.2016 - 12:26
fuente

1 respuesta

3

TL; DR Ese proxy no permite la tunelización. Y usted tiene un servidor de seguridad que analiza las solicitudes HTTP, lo que probablemente no permita el túnel HTTP. Estás bastante limitado a GET y POST.

Ya que puede resolver el DNS, una VPN IPsec en el puerto 53 puede ser una buena alternativa.

proxy PHP no es un proxy general estándar. En otras palabras, no sigue los estándares de proxy (generales) (HTTP CONNECT o SOCKS), simplemente es un proxy HTTP para las solicitudes GET y POST. No se trata de un proxy HTTP completo que implementa HTTP CONNECT, lo que permitiría la conexión de túneles y la omisión de un firewall.

En el código proxy proxy usa CURL, más exactamente curl_exec , de la siguiente manera:

$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;

Incluso si envía un HTTP CONNECT, el proxy le devolverá la respuesta y cerrará la conexión, que no es así como funciona HTTP CONNECT.

Eso no quiere decir que CURL no pueda funcionar con HTTP CONNECT, puede hacerlo, pero no a través de PHP curl_exec .

Todo lo dicho. Tiene un servidor de seguridad con estado que analiza los encabezados HTTP (ya que solo permite /admin/ solamente). Dudo mucho que el firewall le permita enviar un HTTP CONNECT en primer lugar. En otras palabras, si el firewall rechaza esto (observe el error tipográfico):

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

Entonces no creo que lo permita:

CONNECT /admin/somewhere HTTP/1.1

Ya que fallaría en la misma coincidencia de expresiones regulares. Y como su servidor de seguridad solo permite HTTP a través de (y lo analiza), no puede usar otros protocolos, por ejemplo. VPN en posrt 80.

Nota extra (más optimista)

Una cosa que me sorprende es que puedes resolver DNS. Por lo tanto, el firewall debe permitir paquetes UDP en el puerto 53.

Y, a menos que esté utilizando un servidor DNS interno (y, por lo tanto, la resolución del DNS no pasa por el firewall), puede sortear la limitación del encabezado HTTP ejecutando una VPN en modo udp (IPsec) y "conectar" a puerto 53. Eso canalizará su tráfico y mirará al firewall como solicitudes y respuestas de DNS.

    
respondido por el grochmal 15.10.2016 - 14:26
fuente

Lea otras preguntas en las etiquetas