oasys系統程式碼審計

蚁景网安实验室發表於2024-11-06

簡述:

oasys是一個OA辦公自動化系統,使用Maven進行專案管理,基於springboot框架開發的專案,mysql底層資料庫,前端採用freemarker模板引擎,Bootstrap作為前端UI框架,整合了jpa、mybatis等框架。

下載地址:https://github.com/misstt123/oasys

此專案部署極為簡單,我使用的是phpstudy的5.7版本mysql,修改application.properties配置,在IDEA匯入oasys.sql資料後,就可以直接執行

oasys系統程式碼審計

並訪問後臺地址:http://localhost:8088/logins

注意別埠衝突

CSRF:

登入後臺,在使用者皮膚處,修改便籤功能存在csrf漏洞。

oasys系統程式碼審計

點選修改,抓包,點選生成CSRF的Poc:

oasys系統程式碼審計

將生成Poc的URL複製到瀏覽器,訪問:

oasys系統程式碼審計

訪問後,發現已經按照Poc上內容進行了修改:

oasys系統程式碼審計

SQL隱碼攻擊:

程式碼分析:

在pom檔案發現採用mybatis依賴:

oasys系統程式碼審計

全域性搜尋${

oasys系統程式碼審計

找到outtype引數,定位到xml檔案:

oasys系統程式碼審計

符合sql注入條件,於是開始找對應介面,引數,全域性搜尋allDirector欄位:

oasys系統程式碼審計

定位到介面層,於是找介面實現類,發現無,於是全域性搜尋該介面名稱,找哪裡引用了此介面:

oasys系統程式碼審計

發現AddController層引用該介面,並透過mapper進行資料庫操作,在該controller層搜尋原介面方法,定位到具體程式碼塊:

oasys系統程式碼審計

可以看到該引數沒有經過任何過濾,於是根據程式碼塊註釋進行漏洞復現:

oasys系統程式碼審計

在後臺找到通訊錄,找到外部通訊錄,點選新增聯絡人:

oasys系統程式碼審計

抓包找到對應資料包:

oasys系統程式碼審計

將localhost換成自己對應的IP,放入sqlmap驗證成功:

oasys系統程式碼審計

其實從最初的xml檔案來看,其它幾個引數也存在sql注入。

【----幫助網安學習,以下所有學習資料免費領!加vx:dctintin,備註 “部落格園” 獲取!】

 ① 網安學習成長路徑思維導圖
 ② 60+網安經典常用工具包
 ③ 100+SRC漏洞分析報告
 ④ 150+網安攻防實戰技術電子書
 ⑤ 最權威CISSP 認證考試指南+題庫
 ⑥ 超1800頁CTF實戰技巧手冊
 ⑦ 最新網安大廠面試題合集(含答案)
 ⑧ APP客戶端安全檢測指南(安卓+IOS)

儲存XSS:

登入後臺後,使用者處點選修改資訊,插入xss程式碼造成彈窗。

oasys系統程式碼審計

根據提交儲存的介面全域性搜尋:

oasys系統程式碼審計

找到相關資訊,根據程式碼分析,無任何過濾直接儲存,造成xss漏洞:

oasys系統程式碼審計

此後臺很多地方也均無過濾,可以直接插入xss程式碼執行。

任意檔案讀取漏洞:

在控制層UserpanelController處,如下程式碼存在邏輯錯誤導致任意檔案讀取:

oasys系統程式碼審計

可以看出此程式碼塊是用來處理影像請求,並將資料返回到http響應的程式碼。

這段程式碼我初看並沒看懂,於是對程式碼進行詳細分析:

oasys系統程式碼審計

紅框程式碼邏輯很簡單,先傳入的f.getPath()值,再透過FileInputStream進行檔案讀取並返回到http響應。

關鍵就是f.getPath()的值怎麼來的?

oasys系統程式碼審計

如上紅框程式碼,f.getPath()的值來自於rootpath與path的拼接,而path的值則是,先透過request.getRequestURI()獲取,再將/image替換為空得來。

但rootpath的值呢?

於是我在該類搜尋rootpath找到其定義程式碼:

oasys系統程式碼審計

發現以@Value註解定義rootpath的值,而@Value註解的作用就是從專案配置檔案中獲取資訊,於是轉到配置檔案,搜尋關鍵字:rootpath

oasys系統程式碼審計

繼續回到controller程式碼,此時找到rootpath的值,也明白了讀取檔案的邏輯,於是嘗試構造多個/image..路徑讀取我D盤upload下的檔案:

oasys系統程式碼審計

如下圖,讀取成功:

oasys系統程式碼審計

更多網安技能的線上實操練習,請點選這裡>>

相關文章