Squid es un servidor proxy para web con caché.
Entre sus utilidades está la de mejorar el rendimiento de las conexiones de empresas y particulares a Internet guardando en caché peticiones recurrentes a servidores web y DNS, acelerar el acceso a un servidor web determinado o añadir seguridad realizando filtrados de tráfico.
Para probar cómo ganar acceso a un squidproxie, vamos a cescargarnos un laboratorio que tiene unas vulnerabilidades que nos permitirán ganar acceso, ya que en caso de estar todo actualizado, los intentos de acceso, quedarían registrados y podrian ser evitados.
Me descargo la máquina SicOs de Vulnhub.
Hago un descubrimiento de la ip con arpscan
arp-scan -I eth0 --ignoredumps
escaneo puertos abiertos
nmap -p- --open -sT --min-rate 5000 -vvv -n -Pn 192.168.111.39 -oG allPorts
veo que hay dos abiertos
22,3128
lanzo con nmap un escaneo mas exaustivo
nmap -sCV -p22,3128 192.168.111.39 -oN targeted
Veo que es una maquina debian y que es un squid proxie, lo que ya sabiamos por que nos hemos descargado este proyecto justamente por esto. el SquidProxie es un servidor situado entre la maquina e internet que funciona como cache, así el proxy puede evitar accesos indeseados, guarda las peticiones…
Voy a usar este proxy para ver los puertos abiertos detras del proxy.
nmap -p80 192.168.111.39 -T5 -v -n
veo un puerto filtrdo por el puerto 80/TCP
con curl puedo filtrar el proxy por el puerto 3128
curl http://192.168.111.39 --proxy http://192.168.111.39:3128
con foxy proxy en options add
Title SquidProxy
Type: Http
Proxy IP: 192.168.111.39
Port: 3128
le doy a save
en el navegador en foxy proxy veo que esta pasando por el sqid proxy que le acabo de definir. Ahora con gobuster pordria lanzar:
gobuster dir -u http://192.168.111.39/ --proxy http://192.168.111.39:3128 -w /usr/share/seclist/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20
le doy a enter y deberia de descubrit sub-directorios como robots, wolfcms
Para enumerar todos los puertos ocultos también me podría definir con python:
!/usr/bin/python3
import sys, signal, requestd\par
def def_handker(sig, frame):
print("\n\n Saliento…\n")
sys.exit(1)
ctrl+c
signal.signal(signal.SIGINT, def_handler)
main_url = "http://127.0.0.1"
squid_proxy = {'http': 'http://192.168.111.39:3128'}
def portDiscovery():
common_tcp_ports = {20, 21, 22, 23, 25, 53, 67, 68, 69, 80,110, 119,
123, 143, 161, 162, 443, 445, 514, 540,587, 631, 993, 995, 1080, 1433,
1434, 1521, 3306, 3389,5432, 5900, 6379, 6660, 6661, 6662, 6663, 8080,
8888, 9000,9100, 10000, 20000, 50000, 8000, 8081, 8880, 9090, 10051,
27017}
for tcp_port in common_tcp_ports:
r = request.get(main_url + ':' + str(tcp_port), proxies=squid_proxy)
if r.status_code != 503:
print("\n[+] Port " + str(tcp_port) + " - OPEN")
if name == 'main':
portDiscovery()
para ejecutarlo: python3 squid_proxy_port_discovery.py
si me devuelve un estado diferente a 503, sera que el puerto esta abierto
Tambien en la propia url podriamos acceder asi:
curl http://127.0.0.1:3306 --proxy http://admin:password@192.168.111.39:3128 --output output
0 comentarios