CVE-2021-20873-MovableType XMLRPC 远程命令执行漏洞分析

VSole2021-10-28 13:22:46

漏洞信息

近日看到MovableType爆出多个版本存在远程命令执行漏洞CVE-2021-20873,影响版本如下:

  • Movable Type <= 7 r.5002(V7.8.1)
  • Movable Type <= 6.8.2
  • Movable Type Advanced 7 <= r.5002
  • Movable Type Advanced <= 6.8.2
  • Movable Type Premium Advanced <= 1.46
  • Movable Type Premium <= 1.46

MovableType分为开源版本和商业版本,开源版本代码托管在Github中。可以直接下载开源版本进行部署安装。安装完毕后访问登录页面为`http://localhost/cgi-bin/mt/mt.cgi`。

也可以通过官方注册后,下载商业试用版本。

漏洞分析

MovableType基于`PERL+PHP`混合开发,使用PERL调用部分php代码。首先查看cgi-bin目录下的CGI文件,不同CGI返回结果,其中mt-xmlrpc.cgi返回411错误。

在`mt-xmlprc.cgi`中引用`MT::XMLRPCServer`包。


发送POST请求显示参数错误。

在`XMLRPC.pm->ping_update`方法中找到XML请求类似的报文,返回`testfunc`函数访问错误,说明XML格式初步正常。

跟踪到`extlib/SOAP/Lite.pm`第2750行,使用`class`和`method_name`定位代码,成功后执行`eval`调用。在`testfunc`前加上一个`test`类名,提示`Failed to access class test`。

perl的INC变量包含了所有perl module的查找路径,@INC则为从模块路径中查找模块,通过打印得到@INC列表。

  • /var/www/cgi-bin/mt/extlib
  • /var/www/cgi-bin/mt/lib
  • /usr/local/lib64/perl5
  • /usr/local/share/perl5
  • /usr/lib64/perl5/vendor_perl
  • /usr/share/perl5/vendor_perl
  • /usr/lib64/perl5/usr/share/perl5

以`/var/www/cgi-bin/mt/lib/MT.pm`为例,打印出`$VERSION`变量。

继续搜索 `MT.pm`源代码,发现`handelr_to_codefef`可调用`eval`执行命令。

执行PERL代码,但没有回显,执行CURL语句示例如下。

最后通过bash命令返回回显结果。

漏洞修复

在新版本(6.8.3)中,删除了`XMLRPC`的调用。

最后记得更新`MovableType`到最新版本。

漏洞perl
本作品采用《CC 协议》,转载必须注明作者和本文链接
网络安全和基础设施安全局(CISA)已识别出两个重大漏洞,并将其添加到其已知的可利用漏洞(KEV)目录中。这些漏洞涉及Google Chrome中最近修补的缺陷以及影响开源Perl库“Spreadsheet::ParseExcel”的错误,该库专为读取Excel文件中的信息而设计。
'User Portal' 及 'Webadmin' 两个接口存在认证绕过漏洞漏洞巧妙利用了 Java 和 Perl 处理解析 JSON 数据的差异性,实现了变量覆盖,从而导致认证绕过及命令执行。
CVE-2021-20873-MovableType XMLRPC 远程命令执行漏洞分析。
CVE-2020-25223-Sophos UTM WebAdmin 远程命令执行漏洞分析。
针对被分析目标程序,手工构造特殊输入条件,观察输出、目标状态变化等,获得漏洞的分析技术。输入包括有效的和无效的输入,输出包括正常输出和非正常输出。安全公告或补丁发布说明书中一般不指明漏洞的准确位置和原因,黑客很难仅根据该声明利用漏洞。代码流分析主要是通过设置断点动态跟踪目标程序代码流,以检测有缺陷的函数调用及其参数。
梭子鱼于5月20日向所有邮件安全网关设备推送安全补丁解决了该问题,并在一天后通过部署专用脚本阻止攻击者访问受感染的设备。5月24日,梭子鱼警告客户其邮件安全网关设备可能已被攻击者利用零日漏洞入侵,建议他们展开安全审查,确保攻击者没有横向移动到网络上的其他设备。
这里建议doc文档,图片可以贴的详细一些。爆破完好了,一样的6。想给它一个清晰完整的定义其实是非常困难的。
一、漏洞挖掘的前期–信息收集 虽然是前期,但是却是我认为最重要的一部分; 很多人挖洞的时候说不知道如何入手,其实挖洞就是信息收集+常规owasp top 10+逻辑漏洞(重要的可能就是思路猥琐一点),这些漏洞的测试方法本身不是特别复杂,一般混迹在安全圈子的人都能复现漏洞。接下来我就着重说一下我在信息收集方面的心得。
VSole
网络安全专家