當前位置:
首頁 > 新聞 > Nuxeo認證繞過和RCE漏洞(CVE-2018-16341)分析

Nuxeo認證繞過和RCE漏洞(CVE-2018-16341)分析


簡介


Nuxeo Platform是一款跨平台開源的企業級內容管理系統(CMS)。


nuxeo-jsf-ui組件處理facelet模板不當,當訪問的facelet模板不存在時,相關的文件名會輸出到錯誤頁面上,而錯誤頁面會當成模板被解析,文件名包含表達式也會被輸出同時被解析執行,從而導致遠程代碼執行漏洞。


在漏洞挖掘過程中發現nuxeo-jsf組件默認在10.2沒有安裝,歷史版本是默認就安裝的。可以通過nuxeoctl mp-install nuxeo-jsf-ui 命令安裝。


本文介紹的兩個漏洞由筆者發現並提交給官方,CVE編號為:CVE-2018-16341。


有趣的是在官方10.3版本的發布日誌中並沒有提及該漏洞(CVE-2018-16341),但實際已被修復。


影響範圍



Nuxeo Server版本 < 10.3


漏洞復現


通過在官網下載Nuxeo 10.2的安裝包在本地安裝,使用默認密碼登陸Administrator/Administrator。


在登陸狀態下訪問test${11*11}.xhtml,可以看到表達式被執行

執行系統命令


Nuxeo 是構建在Seam Framework之上的, Seam是由Jboss開發的Web應用程序框架,在前幾年比較流行,但依然有很多應用程序使用了Seam。


當用EL來執行任意系統命令時,Seam內部對EL的解析有一定的防護,用下面的Payload可繞過。

${"".getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("calc",null).toString()}



認證繞過


在不登陸的情況下,是無法訪問facelet模板的,如果需要登陸才能命令執行,漏洞略顯得有點雞肋。發現可以通過

login.jsp/%24%7b%31%31%2a%31%31%7d.xhtml 繞過訪問。


認證繞過分析


通過查看web.xml配置文件,開發者為*.xhtml資源註冊了名為NuxeoAuthenticationFilter的過濾器和Faces Servlet。憑藉經驗認證工作應該在filter處理。
通過調試發現,在NuxeoAuthenticationFilter類中的bypassAuth方法中有相關邏輯


進入到該方法中,unAuthenticatedURLPrefix是一個列表,值為[「login.jsp」,」webservices/」] ,requestPag 只要以 unAuthenticatedURLPrefix 數組中的字元串開頭就不會驗證用戶身份。


根據註冊的Faces Servlet規則」*.html」, login.jsp/test.xhtml 肯定是匹配的,如果要對資源進行訪問控制肯定要先進入到訪問控制邏輯中的,但是訪問控制邏輯中只是通過startsWith方法來比較的,肯定也是符合的,所以login.jsp/test.xhtml這個路徑可以繞過NuxeoAuthenticationFilter認證控制進入到Faces Servlet(模版相關)中。


可能會問,那我使用/webservices/xx.xhtml是不是也可以繞過呢?答案是不可以。對/webservices/*資源註冊了另一個Servlet,一個請求只能被一個Servlet處理,這個註冊方式優先順序更高。


RCE分析


先來一張案發現場的圖,is變數含有用戶可控的內容進入到了parse方法中。


src的handler為NuxeoNotFoundResourceHandler,看下實現



getInputStream中的錯誤信息中包含表達式,也會進入parse方法中執行, 即請求的路徑不存在時將會把路徑當成源內容返回給調用者,這裡就會進入到模版的parse方法中,然後就被解析執行了。


補丁分析


https://github.com/nuxeo/nuxeo/commit/eb54a9145c6d8297eba9d7dafc74556e735fa388#diff-cf2094833ef0eea473d03bf6559f1798R97


這是通過過濾的方式修復的,在getInputStream中,只有當路徑中不包含」#」和」$」時才會把路徑輸出到輸入流中,這樣就無法執行EL了。


參考鏈接


https://doc.nuxeo.com/nxdoc/nuxeo-jsf-ui/


http://blog.orange.tw/2018/08/how-i-chained-4-bugs-features-into-rce-on-amazon.html


https://github.com/nuxeo/nuxeo


作者:斗象能力中心 TCC – 星光

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

「驅動人生」利用高危漏洞傳播病毒,半天感染數萬台電腦

TAG:FreeBuf |