【更新】Ivanti connect secure RCE 补丁分析

admin 2024年3月27日18:29:47评论8 views字数 954阅读3分10秒阅读模式

接前文

CVE-2023-46805&CVE-2024-21887 Ivanti connect secure RCE分析

之前由于没有弄到补丁,现在补充一下补丁分析。

补丁分析

安装补丁后,按照老办法将磁盘密钥拖出来,而后解密磁盘,得到修复后的代码。

目录穿越

查看diff可知修改了如下函数

【更新】Ivanti connect secure RCE 补丁分析

查看代码后可知,在PyRestHandler:WebHandler函数中对目录穿越漏洞进行了修复,在web服务器将请求转发给restservice之前,先验证了url中是否有../及各种变形,验证通过后才将请求转发给后端的restservice。

【更新】Ivanti connect secure RCE 补丁分析

命令执行

从补丁中可以看到其将Popen的stdout改为了subprocess.PIPE,从而将命令执行修复。

def get(self, url_suffix=None, node_name=None):        if request.path.startswith("/api/v1/license/keys-status"):            try:                dsinstall = os.environ.get("DSINSTALL")                if node_name == None:                    node_name = ""                else:                   ....                proc = subprocess.Popen(                    [                        dsinstall + "/perl5/bin/perl",                        dsinstall + "/perl/getLicenseCapacity.pl",                        "getLicenseKeys",                        node_name,                    ],                    stdout=subprocess.PIPE,                )

同样的在awsazuretestconnection.py中也对命令注入进行了修复

                    args = [                        dsinstall + "/perl5/bin/perl",                        dsinstall + "/perl/AwsAzureTestConnection.pl",                        method,                    ]                    args.extend([str(x) for x in server_information])                    proc = subprocess.Popen(                        args,                        shell=False,                        stdout=subprocess.PIPE,                    )                    output, errors = proc.communicate()

原文始发于微信公众号(闲聊趣说):【更新】Ivanti connect secure RCE 补丁分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月27日18:29:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【更新】Ivanti connect secure RCE 补丁分析https://cn-sec.com/archives/2609412.html

发表评论

匿名网友 填写信息