Saltar a contenido

Proxying Tools

Un aspecto importante del uso de proxies web es habilitar la intercepción de solicitudes web realizadas por herramientas de línea de comandos y aplicaciones cliente pesado. Esto nos proporciona transparencia en las solicitudes web realizadas por estas aplicaciones y nos permite utilizar todas las diferentes funciones de proxy que hemos utilizado con aplicaciones web.

Para enrutar todas las solicitudes web realizadas por una herramienta específica a través de nuestras herramientas de proxy web, debemos configurarlas como el proxy de la herramienta (es decir, http://127.0.0.1:8080), de manera similar a lo que hicimos con nuestros navegadores. Cada herramienta puede tener un método diferente para configurar su proxy, por lo que es posible que tengamos que investigar cómo hacerlo para cada una.

Esta sección cubrirá algunos ejemplos de cómo usar proxies web para interceptar solicitudes web realizadas por dichas herramientas. Puedes usar Burp o ZAP, ya que el proceso de configuración es el mismo.

Nota: Proxying tools usualmente los ralentiza, por lo tanto, solo usa proxies cuando necesites investigar sus solicitudes y no para uso normal.


Proxychains

Una herramienta muy útil en Linux es proxychains, que enruta todo el tráfico proveniente de cualquier herramienta de línea de comandos a cualquier proxy que especifiquemos. Proxychains añade un proxy a cualquier herramienta de línea de comandos y, por lo tanto, es el método más simple y fácil para enrutar el tráfico web de herramientas de línea de comandos a través de nuestros proxies web.

Para usar proxychains, primero tenemos que editar /etc/proxychains.conf, comentar la última línea y añadir la siguiente línea al final:

#socks4         127.0.0.1 9050
http 127.0.0.1 8080

También deberíamos habilitar Quiet Mode para reducir el ruido descomentando quiet_mode. Una vez hecho esto, podemos anteponer proxychains a cualquier comando, y el tráfico de ese comando debería ser enrutado a través de proxychains (es decir, nuestro proxy web). Por ejemplo, intentemos usar cURL en uno de nuestros ejercicios anteriores:

proxychains curl http://SERVER_IP:PORT

ProxyChains-3.1 (http://proxychains.sf.net)
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Ping IP</title>
    <link rel="stylesheet" href="./style.css">
</head>
...SNIP...
</html>    

Vemos que funcionó como normalmente lo haría, con la línea adicional ProxyChains-3.1 al principio, para notar que se está enroutando a través de ProxyChains. Si volvemos a nuestro proxy web (Burp en este caso), veremos que la solicitud efectivamente pasó por él:

Proxychains Curl


Nmap

A continuación, intentemos enrutar nmap a través de nuestro proxy web. Para saber cómo usar las configuraciones de proxy para cualquier herramienta, podemos ver su manual con man nmap, o su página de ayuda con nmap -h:

nmap -h | grep -i prox

  --proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies

Como podemos ver, podemos usar la flag --proxies. También deberíamos añadir la flag -Pn para omitir el descubrimiento de hosts (como se recomienda en el manual). Finalmente, también usaremos la flag -sC para examinar lo que hace un escaneo de scripts de nmap:

nmap --proxies http://127.0.0.1:8080 SERVER_IP -pPORT -Pn -sC

Starting Nmap 7.91 ( https://nmap.org )
Nmap scan report for SERVER_IP
Host is up (0.11s latency).

PORT      STATE SERVICE
PORT/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.49 seconds

Una vez más, si vamos a nuestra herramienta de proxy web, veremos todas las solicitudes realizadas por nmap en el historial del proxy:

nmap proxy

Nota: El proxy integrado de Nmap todavía está en su fase experimental, como se menciona en su manual (man nmap), por lo que no todas las funciones o el tráfico pueden ser enroutados a través del proxy. En estos casos, simplemente podemos recurrir a proxychains, como hicimos anteriormente.


Metasploit

Finalmente, intentemos enrutar el tráfico web realizado por los módulos de Metasploit para investigarlos y depurarlos mejor. Deberíamos comenzar iniciando Metasploit con msfconsole. Luego, para configurar un proxy para cualquier exploit dentro de Metasploit, podemos usar la flag set PROXIES. Probemos el escáner robots_txt como ejemplo y ejecutémoslo contra uno de nuestros ejercicios anteriores:

msfconsole

msf6 > use auxiliary/scanner/http/robots_txt
msf6 auxiliary(scanner/http/robots_txt) > set PROXIES HTTP:127.0.0.1:8080

PROXIES => HTTP:127.0.0.1:8080


msf6 auxiliary(scanner/http/robots_txt) > set RHOST SERVER_IP

RHOST => SERVER_IP


msf6 auxiliary(scanner/http/robots_txt) > set RPORT PORT

RPORT => PORT


msf6 auxiliary(scanner/http/robots_txt) > run

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Una vez más, podemos volver a nuestra herramienta de proxy web de elección y examinar el historial del proxy para ver todas las solicitudes enviadas:

msf proxy

Vemos que la solicitud efectivamente pasó por nuestro proxy web. El mismo método puede usarse con otros escáneres, exploits y otras características en Metasploit.

Podemos utilizar nuestros proxies web de manera similar con otras herramientas y aplicaciones, incluidos scripts y clientes pesados. Todo lo que tenemos que hacer es configurar el proxy de cada herramienta para usar nuestro proxy web. Esto nos permite examinar exactamente qué están enviando y recibiendo estas herramientas y potencialmente repetir y modificar sus solicitudes mientras realizamos pruebas de penetración en aplicaciones web.