首頁>技術>

前言

最近網上爆出致遠OA ajax.do登入繞過和任意檔案上傳漏洞,影響部分舊版致遠OA版本(致遠OA V8.0,致遠OA V7.1、V7.1SP1,致遠OA V7.0、V7.0SP1、V7.0SP2、V7.0SP3,致遠OA V6.0、V6.1SP1、V6.1SP2,致遠OA V5.x,致遠OA G6)。網際網路上已經有基於Python的EXP,為了更好的發揮Goby的作用,嘗試在Goby上編寫EXP工具。

0x01 漏洞復現

漏洞復現主要分以下三個部分:

1.1 未授權訪問

參考unicodeSec大佬的分析,透過請求eyon/thirdpartyController.do.css/…;/ajax.do判斷是否存在漏洞,若出現下圖異常,則可能存在漏洞。

透過抓取資料包,可以看到如下的資料請求和返回結構:

返回的狀態值為200,且返回的資料包含"java.lang.NullPointerException:null"字串。

1.2 任意檔案上傳

呼叫未授權的檔案上傳介面上傳任意檔案,以上傳test.txt,上傳到/seeyon目錄下,內容為test123,資料包如下所示:

返回的狀態值為500,檔案上傳成功會返回。

{  "message":null,  "code":"0844135702",  "details":null}

其中code的值不固定。

檔案上傳失敗會返回。

{  "message": "被迫下線,原因:與伺服器失去連線",  "code": "-1",  "details": null}
1.3 請求上傳的檔案

透過請求上傳的檔案,檢視檔案是否上傳成功,如下所示:

0x02 Goby EXP編寫2.1 漏洞資訊填寫

致遠OA的查詢規則是:app=Yonyou-Seeyon-OA(可以常規掃目標後檢視該目標的資產型別以確定查詢規則)

填寫漏洞資訊,如下所示:

2.2 ScanSteps填寫

2.2.1 未授權訪問判斷

根據漏洞復現部分,GET請求/seeyon/thirdpartyController.do.css/…;/ajax.do,根據返回資料的狀態碼200和返回內容中包含"java.lang.NullPointerException:null"字串判斷目標是否存在漏洞,填寫對應的規則,如下所示:

此處在header的中需要填寫Accep欄位。

2.2.2 檔案上傳二次判斷

和Goby團隊的技術表哥交流後,僅透過上面的未授權訪問判斷,可能會存在很多的誤報,因此需要藉助檔案上傳進一步判斷。

POST資料進行任意檔案上傳,需要帶上Content-Type: application/x-www-form-urlencoded,根據返回內容是否包含message、code和details,並且排除返回內容包含-1(上傳失敗,返回值的code為-1)判斷是否上傳成功。

Post資料可參考網際網路上已有的資源。

tips小技巧:填寫完測試資料後,在自定義PoC的右上角有個"單ip掃描"選項,輸入ip:port,進行單ip掃描,檢視定義的測試選項邏輯是否正確。

2.3 ExploitSteps填寫

從生成的seeyou_OA_ajaxAction_formulaManager_File_Upload.json檔案的ScanSteps中提取Post部分的資料,加入到ExploitSteps中,如下:

需要在ScanSteps前面加上"HasExp‘":“true”,進行設定漏洞驗證。

在mojie師傅的幫助下,將上傳的檔名等內容固定到ExpParams部分中,方便驗證時輸出檔案上傳的資訊,如下所示:

0x03 Goby 驗證效果

5
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • JS 逆向:追蹤某網站Ajax鉤子加JS混淆的反爬流程