mysql堡垒机漏洞_齐治堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析

基本信息

引用:https://www.cnvd.org.cn/flaw/show/CNVD-2019-17294

补丁信息:该漏洞的修复补丁已于2019年6月25日发布。如果客户尚未修复该补丁,可联系齐治科技的技术支持人员获得具体帮助。

漏洞复现

如下图,通过在传递参数”service=`id`”,成功执行命令,并回显命令执行结果。

956fb9aba6a359d3d2d732b54c238c8c.png

源代码分析

首先,定位到/audit/data_provider.php,直接查找$_GET[‘service’]或者$_REQUEST[‘service’]都找不到。原来在文件开头包含的common.php中,已有全局配置。

代码如下,不但给变量加了个前缀”req_”,还过滤掉了一些危险字符。

f50c47d73b811caf1658e088a24e15dc.png

然后,搜索” $req_service”定位到data_provider.php文件的第99行。可见,将$GET[‘service’]赋值到$service变量中。

1831ee3fa7215d7477621a74f6cb1248.png

然后,跟进$service来到data_provider.php文件的第124行。可见,通过字符串拼接,将$_GET[‘service’]带入到$cmd变量中。

bbb62f7e51dc0d15e79a3acc4bae3208.png

然后,跟进$cmd来到data_provider.php文件的第133行。可见,$cmd被带入exec函数中执行。至此,造成远程命令执行漏洞。

fba3962a33fdbbdd02d0a705e3843b1c.png

漏洞利用

通过反单引号执行命令,写入PHP一句话代码到服务器。

原理如下图所示,这样就可以绕过过滤执行任意命令。实际上,还需要用${IFS}替换掉空格才行。

0304dab4bb3039f41e5c2e92a7de24ad.png

所以,最终方案如下。

fd0aacc2f6e8afd725f15d58a4c35a51.png

引用

转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值