以“AI+數據安全”領雁!祝賀美創牽頭項目入選浙江省科技廳“尖兵領雁”計劃 !
2025-12-22
美創AI災備專家:引領災備領域邁入“智能化”時代
2025-12-15
熱點觀察|美創科技丁斐:數據安全 × 價值共創?可信數據空間的 “雙向奔赴”
2025-12-03
美創科技高校供應鏈數據安全方案斬獲 2025 年度 “金智獎”
2025-12-03
每周安全速遞3?? | ShinyHunters 開發新型勒索軟件ShinySp1d3r
2025-11-21
存儲域
數據庫加密 諾亞防勒索訪問域
數據庫防水壩 數據庫防火墻 數據庫安全審計 動態脫敏流動域
靜態脫敏 數據水印 API審計 API防控 醫療防統方運維服務
數據庫運維服務 中間件運維服務 國產信創改造服務 駐場運維服務 供數服務安全咨詢服務
數據出境安全治理服務 數據安全能力評估認證服務 數據安全風險評估服務 數據安全治理咨詢服務 數據分類分級咨詢服務 個人信息風險評估服務 數據安全檢查服務長亭最近發了一個漏洞預警《在野1day風險提示|泛微Ecology信息泄露&前臺任意用戶登錄漏洞》,預警文章鏈接為https://mp.weixin.qq.com/s/ZvbXbtcpq8EslNKZ2hHW_w,本著學習研究的態度,對漏洞可能涉及的邏輯進行了粗略研究。
./xray ws --poc poc-yaml-ecology-ofslogin-aul --url http://example.com
通過wireshark即可抓取到xray驗證該漏洞所發出的請求數據
為
/mobile/plugin/1/ofsLogin.jsp?syscode=syscode×tamp=2&gopage=3&receiver=test&loginTokenFromThird=
既然定位到了具體文件,那么接下來就可以進行分析了
打開泛微ecology9 安裝目錄下的mobile/plugin/1/ofsLogin.jsp文件,如下
首先在19-23行,在訪問該mobile/plugin/1/ofsLogin.jsp這個url時,會首先接收傳輸過來的syscode、receiver、timestamp、loginTokenFromThird、gopage這幾個參數
然后在26行,調用AESCoder.encrypt方法對參數進行AES加密,AESCoder.encrypt方法的第一個參數為receiver+timestamp,調用一個Prop.getPropValue方法獲得一個返回值并與接收到的syscode值進行拼接,得到的返回值作為第二個參數,AES加密得到的數據賦值給loginTokenFromThird2變量
接下來從36行開始進行登錄邏輯的驗證,在36-39行,判斷接收到的loginTokenFromThird與生成的loginTokenFromThird2值是否相等,如果不相等,則登錄失敗,并調轉到/login/Login.jsp。只有loginTokenFromThird與loginTokenFromThird2相等才能繼續執行下面的登錄邏輯。
繼續往下,當loginTokenFromThird與loginTokenFromThird2相等時,首先會將接收到的syscode值作為條件參數在數據表ofs_sendinfo中進行查詢,查詢的字段為hrmtransrule。當查詢到的hrmtransrule為空時(也就是查詢條件syscode值在ofs_sendinfo表中不存在),將hrmtransrule賦值為“1”;當查詢到的hrmtransrule不為空時,進行52-63行的判斷。定義了一個變量rule,默認值為"loginid",若hrmtransrule為"0",則將rule賦值為"id";若hrmtransrule為"1",則rule賦值為"loginid",后面的邏輯同理。
將上述判斷邏輯執行過后,rule變量的值作為條件字段在數據表HrmResource中查詢,而條件參數則為接收到的receiver值
此時筆者直接在本地測試環境數據庫中執行select * from HrmResource;SQL語句查了一下,發現筆者的環境中HrmResource是個空表
也就是說在筆者的環境中,后面的邏輯是無法繼續執行的
接下來到人事->新建人員中新建一個人員
新建完成后,再次查詢,可以看到HrmResource表中已經有數據
故筆者猜測,只有HrmResource用戶表中存在數據時,該漏洞才有可能被利用。
繼續后面的邏輯,后面的邏輯就比較簡單了,從查詢到的結果中獲取id并賦值給userid,然后根據userid生成認證憑證,也就是session,完成認證后就跳轉到用戶指定的頁面,也就是接收到的gopage參數
分析到這里,整個登錄邏輯已經非常清晰了,關鍵在兩個條件:
1.loginTokenFromThird需要與loginTokenFromThird2相等,loginTokenFromThird可控,loginTokenFromThird2則是根據可控的參數調用內部加密函數生成,且加密函數的入參不變時,loginTokenFromThird2也是固定的;
2.HrmResource用戶信息表中必須要有數據。
在HrmResource表中loginid其實就是登錄用戶名,比如默認系統管理員的loginid就是sysadmin,想要接近loginid的判斷邏輯有兩個方法,第一種是syscode值在表中不存在,第二種是根據syscode查到的hrmtransrule必須"1",顯然第一種更好利用一些。接下來就可以構造參數生成loginTokenFromThird2,然后將得到的loginTokenFromThird2值原封不動作為loginTokenFromThird參數值即可完成任意用戶登錄的利用。