行业新闻

【最新漏洞预警】CVE-2022-24***-某知名NAS远程命令执行漏洞分析

【最新漏洞预警】CVE-2022-24***-某知名NAS远程命令执行漏洞分析

漏洞信息

近日爆出某知名NAS存在敏感信息泄露漏洞CVE-2022-24990,组合其他漏洞,可实现未授权远程命令执行。漏洞适用于所有 4.2.x 版本 < 4.2.30,以及所有 4.1.x 版本。

漏洞分析

从官网下载完安装包之后,直接从压缩包中提取PHP文件。在阅读代码的时候,我们会发现目标PHP源码都被加密了。其加密方式为php_screw的变种,对应的解密过程在`usr/lib/php/php_***.so`中。通过逆向其加密算法,写出批量解密程序:

本文将以v4.2.28代码进行漏洞分析,我们先来看`module/api.php`文件。通过分析代码,可以了解其路由格式。例如访问`/module/api.php?test/api`,则程序会调用`test`类的`api`方法。但是并非所有的类方法都能调用,因为这里有两个`in_array`判断,如下图①②标记处:

第一处`in_array`,会判断我们调用的方法是否需要登录验证:

第二处`in_array`,则用来判断我们调用的方法是否需要验证头信息。其中`tos_encrypt_str`函数为TerraMaster自定义函数,其具体实现同样在 `php_***.so`中:

这里,我们先来看下符合调用规则的`mobile`类。该类的`webNasIPS`方法同时存在于`$notCheck`、`$notHeader`中,所以我们无需授权,可以直接调用该方法。`webNasIPS`方法会泄露管理员的密文密码,所以这是一处未授权信息泄露漏洞:

在查看`mobile`类的其他方法时,发现`createRaid`方法存在命令注入。这个方法不需要登录检测,但是需要验证头信息。注入点`$this->in['raidtype']`来自全局变量`$in`,而`$in`变量则由`$_GET`、`$_POST`、`$_COOKIE`组成,用户完全可控:

接下来,我们就要来看下程序的头部校验是如何实现的,即`tos_encrypt_str`函数的代码逻辑。通过逆向`php_***so`,我们会发现 `tos_encrypt_str`函数返回的结果,是本机`eth0`的`mac`地址后6位与输入字符串结合之后的`md5`值。例如:`eth0`的`mac`地址为 `aa:bb:cc:dd:ee:ff`,那么`tos_encrypt_str("123")`的结果等价于`md5("ddeeff123")`:

最后我们要想成功触发`createRaid`方法,只需要满足下面4个条件就行了:

漏洞复现

自动化批量测试效果如下:

关闭