Umbraco CMS中的高風險C#安全漏洞

DefenseCode的安全研究團隊在Umbraco CMS中發現了一個潛在的高風險漏洞。
Umbraco CMS易受任意文件上傳漏洞的攻擊,該漏洞可導致遠程代碼執行(取決于服務器配置)和存儲的跨站點腳本(Stored Cross-Site Scripting )漏洞。
Umbraco CMS是一個功能齊全的開放源碼內容管理系統,它具有足夠的靈活性,可以處理從小型活動和電子宣傳冊到財富500強企業(包括世界上最大的媒體組織)的復雜應用程序的任何內容。全世界有超過500000個網站在使用它。
Umbraco CMS主要用C#編寫,將數據存儲在關系數據庫(通常是Microsoft SQL Server)中,并調用Umbraco CMS的Microsoft IIS(互聯網信息服務)。
漏洞描述
在分析Umbraco CMS源代碼時我們使用了DefenseCode ThunderCan?SAST,默認掃描配置。DefenseCode Thundercan?是一個SAST(靜態應用程序安全測試,白盒測試)解決方案,用于對應用程序源代碼執行廣泛的安全審計。Thundercan?對大型復雜的源代碼項目執行快速而深入的精確分析,提供精確的結果和較低的誤報率。
ThunderScan? 在Umbraco CMS代碼段檢測出漏洞:



上述邏輯與用戶個人信息內的上傳頭像有關(源代碼:/src/Umbraco.Web/Editors/UsersController.cs)
ThunderScan的默認掃描配置沒有考慮賬戶自定義的輸入的清理(Sanitization)方法,例如ToSafeFileName()——這是一個字符串擴展方法,用于防止可以造成路徑遍歷攻擊的任何文件名操作——或者使用DisallowedUploadedFiles列表的文件擴展名黑名單檢查。
然而,防止潛在危險文件的黑名單方法促使對應用程序邏輯進行更深入的檢查。不允許擴展名的默認列表定義在umbracoSettings.config文件中:
<disallowedUploadFiles>ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd,swf,xml,xhtml,html,htm, php,htaccess </disallowedUploadFiles>
由于這種方法,攻擊者可以解析為擴展名,如.wsdl、.xsl、.xsd和其他基于XML的文件類型,這些文件類型將由Microsoft IIS內聯提供,并且可以包含可由受害者瀏覽器執行的惡意JavaScript代碼,從而在Umbraco CMS的默認部署中有效地執行存儲的跨站點腳本(Stored Cross-Site Scripting)攻擊。
跨站腳本攻擊(XSS)是一種注入類型的攻擊,惡意腳本被注入到良性和可信的網站。XSS攻擊發生時,攻擊者使用一個Web應用向不同的終端用戶發送惡意代碼,惡意代碼的形式通常是瀏覽器端腳本。聽任這些攻擊成功的缺陷是非常普遍的,發生在Web應用程序在其生成的輸出中使用了用戶輸入而未經驗證或編碼的任何地方。
攻擊者可以使用XSS向不知情的用戶發送惡意腳本。最終用戶的瀏覽器無法得知腳本不應被信任而將會執行該腳本,由于它認為腳本來源可信,所以惡意腳本能夠訪問被瀏覽器保留并與該站點一起使用的任何Cookie、會話令牌或其他敏感信息。這些腳本甚至能夠重寫HTML頁面的內容。
這一點可以在Umbraco CMS上在線驗證,向/umbraco/backoce/UmbracoApi/Users/PostSetAvatar?id=1終端提交POST上傳請求。用于概念驗證(POC)的文件擴展名.xsdl,包含以下內容:
<defensecode:script xmlns:defensecode="http://www.w3.org/1999/xhtml"> alert('XSS') </defensecode:script>
訪問上傳文件的URL時執行的概念驗證JavaScript如下所示:

如果服務器支持經典ASP,上載.asp文件可能導致遠程代碼執行。這種情況并不少見,因為需要支持托管在同一服務器上的遺留應用程序。對于啟用了WCF服務的HTTP激活功能的服務器也可以這樣說,其中.xamlx文件上載將用于相同的攻擊。
該漏洞已于2020年11月22日向供應商報告,當時Umbraco CMS的最新版本為8.8.2版。該報告已于2020年11月25日被Umbraco安全團隊確認。在默認值中只添加了一個潛在危險的擴展不允許的擴展列表:xamlx。
這使得最新版本(8.12.1,在本博客發布時)仍然容易受到存儲的跨站點腳本攻擊,以及通過經典ASP文件執行潛在的遠程代碼。
浙公網安備 33010602011771號