漏洞盒子/Zabbix SQL注入漏洞分析_小白白帽子教程
sql注入漏洞爆出来已有好几天了,最近忙于安全盒子用户中心的设计,一直没有去研究这个注入,今天早起,闲暇时间写下该文。
简介
是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
影响版本
2.0.x3.0.x
我这里的分析的版本是3.0.3,据说3.0.4已修复该漏洞。
漏洞分析
在jsrpc.php中从url中获取了type,并且把$赋值给了$data,相关代码(第24行开始):
随后40行有一些条件,不满足就会exit,但是很好绕过,代码如下:
再往下是一个传入$data['']的语句,部分代码如下(第46行开始):
第181行传入::($data);,代码如下:
跟进查看,发现的构造函数从url中接收了赋值给$this->并且带入::执行,代码如下:
跟进函数,461行对进行了更新,但是并没有进行SQL查询:
然而最终造成SQL注入的是最后一行:
这个文件里第38行对进行了更新,代码如下:
跟进::flush(),把数据进行了遍历然后带入self::():
跟进self::()即可看到$idx2没有过滤带入SQL查询:
最后的()里面也只是调用了执行sql而已。
至此,SQL注入形成。
然后构造语句,满足各种条件,让程序按照逻辑进入该出,即可注入:
注入效果如图:
这里是注入,而且没有单引号,直接使用xor()在里面用任意报错注入语句即可注入。
修复建议
~
网络安全学习,我们一起交流
~