DefenseCode的安全研究團隊在Umbraco CMS中發現了一個潛在的高風險漏洞。php
Umbraco CMS易受任意文件上傳漏洞的***,該漏洞可致使遠程代碼執行(取決於服務器配置)和存儲的跨站點腳本(Stored Cross-Site Scripting )漏洞。html
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)ide
ThunderScan的默認掃描配置沒有考慮帳戶自定義的輸入的清理(Sanitization)方法,例如ToSafeFileName()——這是一個字符串擴展方法,用於防止能夠形成路徑遍歷***的任何文件名操做——或者使用DisallowedUploadedFiles列表的文件擴展名黑名單檢查。測試
然而,防止潛在危險文件的黑名單方法促使對應用程序邏輯進行更深刻的檢查。不容許擴展名的默認列表定義在umbracoSettings.config文件中:網站
ashx,aspx,ascx,config,cshtml,vbhtml,asmx,air,axd,swf,xml,xhtml,html,htm, php,htaccess
因爲這種方法,***者能夠解析爲擴展名,如.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')
訪問上傳文件的URL時執行的概念驗證JavaScript以下所示:
若是服務器支持經典ASP,上載.asp文件可能致使遠程代碼執行。這種狀況並很多見,由於須要支持託管在同一服務器上的遺留應用程序。對於啓用了WCF服務的HTTP激活功能的服務器也能夠這樣說,其中.xamlx文件上載將用於相同的***。
該漏洞已於2020年11月22日向供應商報告,當時Umbraco CMS的最新版本爲8.8.2版。該報告已於2020年11月25日被Umbraco安全團隊確認。在默認值中只添加了一個潛在危險的擴展不容許的擴展列表:xamlx。
這使得最新版本(8.12.1,在本博客發佈時)仍然容易受到存儲的跨站點腳本***,以及經過經典ASP文件執行潛在的遠程代碼。