【最新漏洞預警】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個條件就行了:

漏洞復現
自動化批量測試效果如下:
