ScrutisWeb曝出嚴(yán)重漏洞,可遠(yuǎn)程控制全球ATM!
2023年年初,Synack Red Team (SRT) 成員 Neil Graves、Jorian van den Hout 和 Malcolm Stagg 發(fā)現(xiàn)了CVE-2023-33871、CVE-2023-38257、CVE-2023-35763 和 CVE-2023-35189 漏洞 。
2023年7月,總部位于法國(guó)的軟件公司 Iagona 在其 ScrutisWeb 網(wǎng)絡(luò)應(yīng)用程序的 2.1.38 版本中修補(bǔ)了這些漏洞。
一直以來,Synack 紅隊(duì)(SRT)全球安全研究人員經(jīng)常會(huì)在 Synack 客戶的基礎(chǔ)架構(gòu)和網(wǎng)絡(luò)服務(wù)器中發(fā)現(xiàn)漏洞,在某些 Synack 目標(biāo)上,SRT 成員可以相互協(xié)作,最大限度地發(fā)揮廣泛的技能組合。
在最近與 Synack 客戶的一次合作中,SRT 某團(tuán)隊(duì)發(fā)現(xiàn)了 ScrutisWeb 中存在的軟件缺陷,ScrutisWeb 是一種用于監(jiān)控銀行和零售 ATM 機(jī)群的安全解決方案。
ScrutisWeb的開發(fā)商Iagona表示,ScrutisWeb可通過任何瀏覽器訪問,幫助全球各組織監(jiān)控自動(dòng)取款機(jī),并在出現(xiàn)問題時(shí)縮短響應(yīng)時(shí)間。ATM 機(jī)群可包括支票存款機(jī)等敏感設(shè)備以及連鎖餐廳的支付終端。
ScrutisWeb 具有一系列功能:
- 重新啟動(dòng)或關(guān)閉一個(gè)終端或整個(gè)機(jī)群
- 檢索銀行服務(wù)信息
- 監(jiān)控(ATM)銀行卡讀卡器
- 發(fā)送和接收文件(至 ATM)
- 遠(yuǎn)程修改數(shù)據(jù)(在自動(dòng)取款機(jī)上)
目標(biāo)枚舉
Synack 客戶在此次合作中有超過 1,000 個(gè)唯一 IP 地址需要評(píng)估。在初步偵查期間,安全研究人員注意到有一個(gè)網(wǎng)絡(luò)服務(wù)器向訪問者發(fā)送了一個(gè)超大的 23MB JavaScript 文件。該文件中包含一個(gè)允許客戶端下載服務(wù)器 webroot 中完整路徑的函數(shù):
this.window.location.href = "/Download.aspx?folder=" + name;
安全研究人員發(fā)現(xiàn),提供"/"的文件夾名稱會(huì)導(dǎo)致 ScrutisWeb 壓縮整個(gè)網(wǎng)絡(luò)根,并將其作為下載文件發(fā)送到瀏覽器。于是他們按照設(shè)計(jì)的功能使用該功能下載了網(wǎng)絡(luò)根目錄。在檢查 Download.aspx 時(shí)發(fā)現(xiàn)它調(diào)用了 "Scrutis.Front.dll "庫(kù),該庫(kù)似乎負(fù)責(zé)處理大部分用戶功能。
CVE-2023-33871: 絕對(duì)路徑遍歷
安全研究人員還注意到 "Download.aspx "的參數(shù)為 "文件 "或 "文件夾"。同時(shí),他們還很快就找到了真正有趣的部分,即處理單個(gè)文件下載的字符串:
str = !path1.Contains(":") ? this.Server.MapPath(path1) : path1.Contains(":");
這段代碼查看的是作為 URL 的 "file "參數(shù)傳遞給該方法的 "path1 "變量。如果參數(shù)中不包含冒號(hào),網(wǎng)絡(luò)服務(wù)器將返回與網(wǎng)絡(luò)根相關(guān)的文件,例如,"https://example.com/Download.aspx?file=thisfile.txt "將下載位于 "https://example.com/thisfile.txt "的文件。但是,如果參數(shù)中包含冒號(hào),網(wǎng)絡(luò)服務(wù)器就會(huì)返回與系統(tǒng)相關(guān)的文件,例如 "https://www.example.com/Download.aspx?file=c:\file.txt" 將下載服務(wù)器上位于 "c:\file.txt "的文件。成功!我們可以從服務(wù)器上下載配置、日志和數(shù)據(jù)庫(kù)。
CVE-2023-35189: 遠(yuǎn)程代碼執(zhí)行
安全研究人員進(jìn)一步檢查 Scrutis.Front.dll 后,發(fā)現(xiàn)了 AddFile() 方法。AddFile() 接受多部分表單 POST 請(qǐng)求,并將上傳的文件存儲(chǔ)到網(wǎng)絡(luò)目錄"/Files/telechar/"中。
這意味著未經(jīng)身份驗(yàn)證的用戶可以上傳任何文件,然后通過網(wǎng)絡(luò)瀏覽器再次查看。其中一個(gè)問題是,最終存放上傳文件的目錄已被配置為允許解釋和執(zhí)行上傳的腳本。我們創(chuàng)建了一個(gè)運(yùn)行簡(jiǎn)單命令 "ipconfig /all "的概念驗(yàn)證(poc.asp),并將其上傳到服務(wù)器。隨后,他們?cè)L問了 "https://[redacted]/poc.asp "網(wǎng)站,服務(wù)器執(zhí)行了系統(tǒng)命令 "ipconfig /all "并返回了響應(yīng),成功命令注入。
通常,人們會(huì)認(rèn)為 RCE 是漏洞利用鏈的高潮。在這種情況下,通過利用其余漏洞獲取 ATM 控制器的用戶訪問權(quán)限,可以實(shí)現(xiàn)更大的惡意價(jià)值??梢栽?Scrutis.Front.dll 中找到每個(gè)有漏洞的調(diào)用,并在未經(jīng)身份驗(yàn)證的情況下使用。
CVE-2023-38257: 不安全的直接對(duì)象引用
安全研究人員發(fā)現(xiàn) GetUserDetails 方法原型是將單個(gè)整數(shù)作為 HTTP POST 請(qǐng)求的輸入。[HttpPost]public UIUser GetUserDetails([FromBody] int idUser)
同時(shí), idUser 參數(shù)似乎是一個(gè)從數(shù)字 1 開始的連續(xù)整數(shù)值。通過向該函數(shù)發(fā)送數(shù)字為 1 的 POST,服務(wù)返回了用戶 "administrateur "的信息,包括加密密碼。
CVE-2023-35763 硬編碼加密密鑰
由于密碼顯然已加密,安全研究人員決定嘗試逆向工程加密機(jī)制。在方法名稱中搜索 "crypt "一詞,顯示了一個(gè)解密函數(shù),該函數(shù)將密碼文本作為輸入,并返回一個(gè)明文 UTF8 字符串。該函數(shù)中有一行披露了明文字符串,該字符串被用作加密/解密用戶密碼的加密密鑰:
public static string Decrypt(string cipherString, bool useHashing)
{
...
numArray = cryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes("ENCRYPTIONKEY"));
...
return Encoding.UTF8.GetString(bytes);
}
安全研究人員編寫了一個(gè)簡(jiǎn)單的 python 腳本,它可以獲取使用 CVE-2023-38257 發(fā)現(xiàn)的加密密碼,并將密碼解密為明文。至此已經(jīng)可以以管理員身份登錄 ScrutisWeb了。
影響
CVE-2023-38257 和 CVE-2023-35763 這兩個(gè)漏洞讓以管理員身份登錄 ScrutisWeb 管理控制臺(tái)成為可能。惡意行為者可以監(jiān)控機(jī)群中各個(gè)自動(dòng)取款機(jī)的活動(dòng)??刂婆_(tái)還允許將 ATM 降為管理模式、上傳文件、重新啟動(dòng)和完全關(guān)閉。需要進(jìn)行進(jìn)一步檢查,以確定是否可以將定制軟件上載到個(gè)別自動(dòng)取款機(jī)上,以執(zhí)行銀行卡外滲、Swift 轉(zhuǎn)賬重定向或其他惡意活動(dòng)。不過,此類額外測(cè)試不在評(píng)估范圍之內(nèi)。
CVE-2023-35189 還可用于清除 ScrutisWeb 上的日志,并刪除惡意行為者曾在那里活動(dòng)的證據(jù)。從客戶端基礎(chǔ)架構(gòu)中的這一立足點(diǎn)可能會(huì)發(fā)生額外的漏洞利用,使其成為惡意行為者面向互聯(lián)網(wǎng)的支點(diǎn)。
修復(fù)漏洞:盡快更新至 ScrutisWeb 2.1.38 版本
值得一提的是,Iagona 非常重視安全問題,在及時(shí)向研究人員通報(bào)進(jìn)展的同時(shí),還迅速解決了四個(gè)發(fā)現(xiàn)的問題。