公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

藍(lán)凌0A的thirdImSyncForKKWebService接口存在任意文件讀取漏洞

admin
2024年12月19日 16:55 本文熱度 1482
0x01.技術(shù)文章僅供參考學(xué)習(xí),請勿使用本文中所提供的任何技術(shù)信息或代碼工具進(jìn)行非法測試和違法行為。若使用者利用本文中技術(shù)信息或代碼工具對任何計(jì)算機(jī)系統(tǒng)造成的任何直接或者間接的后果及損失,均由使用者本人負(fù)責(zé)。本文所提供的技術(shù)信息或代碼工具僅供于學(xué)習(xí),一切不良后果與文章作者無關(guān)。使用者應(yīng)該遵守法律法規(guī),并尊重他人的合法權(quán)益。

0x02 簡介
藍(lán)凌EKP由深圳市藍(lán)凌軟件股份有限公司自主研發(fā),是一款全程在線數(shù)字化OA,應(yīng)用于大中型企業(yè)在線化辦公,包含流程管理、知識管理、會議管理、公文管理等等。藍(lán)凌0A的thirdImSyncForKKWebService接口存在任意文件讀取漏洞。攻擊者可利用漏洞獲取系統(tǒng)敏感信息。
0x03 指紋信息
最近比較閑也好久沒寫公眾號了近期可能會陸陸續(xù)續(xù)的更新漏洞或者漏洞分析?。
web.icon=="302464c3f6207d57240649926cfc7bd4"
0x04 源碼分析
漏洞位置是在ThirdImSyncForKKWebService.java中,漏洞類型是webservice soap類型的。以下代碼分析均為個(gè)人對代碼的理解如有分析不對的還請多擔(dān)待。

前面很簡單就是RequestMapping({"/getTodo"})該注解用于將 HTTP 請求映射到方法上,當(dāng)訪問/getTodo 路徑時(shí),會調(diào)用getTodo 方法。然后NotifyTodoAppResult result = new NotifyTodoAppResult();創(chuàng)建一個(gè)NotifyTodoAppResult 對象result,該對象會存儲操作的結(jié)果,并作為返回值。然后就if判斷是否為空值。

接下來是String whereBlock= "";初始化一個(gè)空字符串whereBlock,用于構(gòu)建查詢的條件部分。HQLInfo info = new HQLInfo();創(chuàng)建一個(gè)HQLInfo 對象info,該對象可能包含了 HQL 查詢所需的信息。List<HQLParameter> paramList = new ArrayList();創(chuàng)建一個(gè)空的paramList 列表,用來存儲查詢條件的參數(shù)。

剩余的不重要直接跳到重點(diǎn),根據(jù)前面的代碼可以判斷出如果type不是13執(zhí)行以下代碼。whereBlock = whereBlock + this.getTodoSqlBlock("type", type, paramList);調(diào)用getTodoSqlBlock方法,傳入"type"typeparamList,向whereBlock 添加對應(yīng)的 SQL 查詢條件。

whereBlock = whereBlock + this.getTodoSqlBlock("type"type, paramList);

我們開始追蹤this.getTodoSqlBlock方法,代碼如下

getTodoSqlBlock方法中調(diào)用了keyword,value,hqlParam參數(shù),而hqlParam參數(shù)是用于存儲查詢條件參數(shù)的列表HQLParameter用于動(dòng)態(tài)構(gòu)建 HQL 查詢的參數(shù)。然后調(diào)用了第二個(gè)重載方法getTodoSqlBlock。

private String getTodoSqlBlock(String keyword, Object value, List hqlParam) {        return this.getTodoSqlBlock(keyword, value, "=", keyword, hqlParam);    }

在這段代碼中我們需要重點(diǎn)關(guān)注是hqlParam.add(new HQLParameter(extendKey, value)); 向hqlParam列表中添加一個(gè)新的HQLParameter對象,extendKey作為參數(shù)的名字,value作為參數(shù)的值。我們追蹤HQLParameter。

private String getTodoSqlBlock(String keyword, Object value, String optStr, String extendKey, List hqlParam) {        hqlParam.add(new HQLParameter(extendKey, value));        String key = keyword.substring(01).toUpperCase() + keyword.substring(1);        return " and sysNotifyTodo.fd" + key + optStr + ":" + extendKey;    }
public HQLParameter(String name, Object value) {        this.name = name;        this.value = value;    }

這個(gè)構(gòu)造函數(shù)的作用是創(chuàng)建一個(gè)HQLParameter對象,并初始化它的 name和value屬性。HQLParameter類通常用于表示HQL(Hibernate Query Language)查詢中的參數(shù),在查詢構(gòu)建時(shí)使用,在這里可能包含查詢的字段名name和該字段的值value。這個(gè)類動(dòng)態(tài)構(gòu)建查詢條件時(shí)能夠方便地傳遞參數(shù)。

到這里可能大家會覺得這個(gè)webservice接口不就是HQL查詢嘛,別急我們接著往下走。根據(jù)剛才的分析type是由POST請求中嵌入了文件路徑的參數(shù)引發(fā)的而后從代碼邏輯來看type參數(shù)被傳遞給方法this.getTodoSqlBlock構(gòu)造了HQL查詢的一部分。這些最終的觸發(fā)點(diǎn)是調(diào)用了page=this.sysNotifyTodoService.findPage(info);來觸發(fā)查詢。
最終是HQL查詢與ORM框架的處理,代碼中使用了HQL(Hibernate Query Language)查詢,whereBlock中包含了攻擊者傳入的參數(shù)type。
PS:ORM框架是什么(個(gè)人理解)
ORM 框架(如 Hibernate 或 JPA)處理參數(shù)時(shí)可能會嘗試對 file:// URI 進(jìn)行解析。這種行為通常發(fā)生在以下場景:類型轉(zhuǎn)換:框架可能會將 file:// 參數(shù)作為 URI 類型或資源類型進(jìn)行解析。如果 fdType 是與文件、資源或流相關(guān)的字段(如 Blob、Clob 等),框架可能會嘗試加載對應(yīng)資源。擴(kuò)展功能:某些 ORM 框架支持使用 URI 直接指向文件或資源(通常用于存儲外部文件路徑)。這類功能會隱式調(diào)用 Java 的 URL.openStream() 或 Files.newInputStream(),從而加載遠(yuǎn)程資源或本地文件。
由于本身webservice走的是soap協(xié)議,這里使用到了xop:Include
SOAP 的 XOP 擴(kuò)展:
SOAP 的 XOP 擴(kuò)展:xop:Include 是 SOAP 附件優(yōu)化機(jī)制(XML-binary Optimized Packaging)。如果服務(wù)器端 SOAP 框架支持 XOP,并未禁用 file:// 協(xié)議,它可能會嘗試解析 href 指向的文件內(nèi)容。觸發(fā)條件:如果服務(wù)器端解析 SOAP 的 type 字段時(shí),遇到 xop:Include 的 href 屬性,會調(diào)用底層的 URI 解析方法(如 new URL().openStream()),加載指定文件。
小結(jié)我們來捋一捋漏洞觸發(fā)的全過程

第一步:入口點(diǎn)是getTodo,用戶通過請求體傳入type參數(shù)。該參數(shù)通過this.getTodoSqlBlock方法構(gòu)造HQL查詢條件,最終被拼接到whereBlock中。

第二步:構(gòu)造HQL查詢條件getTodoSqlBlock方法被調(diào)用,用戶傳入的type添加到hqlParam中。

第三步:HQL查詢被執(zhí)行 page=this.sysNotifyTodoService.findPage(info);

第四步:文件解析觸發(fā),解析過程使用SOAP框架的xop:Include協(xié)議ORM 框架。

那么也就是說最終觸發(fā)漏洞的是soap中包含了xop:Include標(biāo)簽,也就是我可以在poc中的任意位置插入paylaod,但是能夠被解析的前提是代碼中必須存在查詢或處理邏輯,能夠解析并利用傳入的參數(shù)內(nèi)容。

0x05 漏洞復(fù)現(xiàn)

根據(jù)以上代碼分析的結(jié)果構(gòu)造poc如下,參數(shù)是type,回顯是base64的然后解碼就行

剛才根據(jù)代碼分析也得知不是只有type這一處能夠解析,我們嘗試別的參數(shù)也可以正常文件讀取。


閱讀原文:https://mp.weixin.qq.com/s/t2KQOe3aGex5CPwa6kNFPg


該文章在 2024/12/19 17:43:36 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91精彩视频在线观看 | 国产亚洲日韩第一页av | 国产爆乳无码福利电影 | 成人精品一区二区三区 | 国产激情无码视频一区二区三区 | 国产午夜激无码av片在线观看 | av在线播放日韩亚洲欧 | 成人免费a级毛片无码片2 | 国产欧美高清一区二区三区 | 黑人巨大精品欧美一区二区小视 | 国产在线精品一区二 | 国产高清精品自拍av | 国产区视频在线网站 | av老司机av天堂 | hezyo加勒比久久爱综合 | 国产丝袜不卡一区二区 | 国产精品调教视频一区 | av中文字幕在线亚洲 | 成人免费aa在线观看 | 国产精品亚洲一区二区无码 | 国产精品观看 | 18禁黄污无遮挡无码网站 | 极品美女aⅴ在线观看 | 国产一精品一av一免费爽爽 | 国产三级直播在线播放直播 | 国产无码精品一区二区三区 | 国产精品青青青高清在线观看 | 国产精品一区二区亚洲精品 | 国产福利电影在线观看 | 国产成人无码av片在线观看 | 精品动漫无码一区二区三区 | 国产人与动人 | 91人妻无码精品一区二区毛片 | 精品国产91久久久久久黄无码 | 高清精品一区二区三区一区 | 国产专区亚洲欧美另类在线观看 | 2025国内精品久久久久 | 丰满少妇人妻无码专区 | 成人免费观看高清视频a斤 成人免费观看国产高清 | 国产精品日日摸夜夜添夜夜添无 | 精品国产成人一区二区99 |