金和OA系統(tǒng)代碼審計(jì)之挖掘0day,未公開(kāi)poc
參與的眾測(cè)項(xiàng)目,資產(chǎn)非常難挖掘漏洞,所以只能通過(guò)審計(jì)的方式,找找漏洞點(diǎn) 資產(chǎn)里相對(duì)用的多的 oa,都是用友,泛微,致遠(yuǎn)等大型 oa,對(duì)我這種小菜來(lái)說(shuō),直接上手有點(diǎn)難度,無(wú)意間發(fā)現(xiàn)了金和系統(tǒng),就直接來(lái)審計(jì)學(xué)學(xué),剛開(kāi)始找網(wǎng)盤(pán)資料,發(fā)現(xiàn)有個(gè) net 版的源碼,結(jié)果目標(biāo)系統(tǒng)是 jsp,就 G 了。 然后就找朋友要了安裝包,對(duì)源碼進(jìn)行分析,跟蹤路由,審計(jì)漏洞點(diǎn)。 但是有一點(diǎn)就是sbcp是真他媽惡心,水平越權(quán),只因 id 不易猜測(cè),直接駁回,任意密碼重置,通過(guò) id,可直接重置密碼,不需要驗(yàn)證,也是因?yàn)?id 不易猜測(cè)。真他媽氣打不一出來(lái) 你他馬勒戈壁,回答我,你的安全是誰(shuí)教的,這他媽不是漏洞嗎,look in my eyes
路由關(guān)系尋找 開(kāi)始正題,第一次審計(jì),所以不太了解路由關(guān)系,大致看了看代碼結(jié)構(gòu),發(fā)現(xiàn)相對(duì)簡(jiǎn)單點(diǎn)。
整體文件那么多,主要是關(guān)注 WEB-INF/jsp 文件夾,這是對(duì)應(yīng)的視圖文件,也就是訪問(wèn) web 頁(yè)面的 jsp 文件。
我并沒(méi)有分析那些需要鑒權(quán),那些不需要鑒權(quán)。 這個(gè)網(wǎng)上有個(gè)模板注入漏洞,我是根據(jù)對(duì)應(yīng)的二級(jí)目錄來(lái)找的相關(guān)漏洞點(diǎn),后面也是發(fā)現(xiàn)了注入,但是是Hibernate,構(gòu)造半天沒(méi)讀出來(lái)數(shù)據(jù)庫(kù)名 jc6/platform/portalwb/portalwb-con-template!viewConTemplate.action 然后就是根據(jù)portalwb目錄下的文件去挖掘注入。 然后再其次就是關(guān)注后臺(tái)文件,也就是 lib 下的 jcs-xx.jar文件,這才是后端代碼。
根據(jù)上面的路徑 jc6/platform/portalwb/portalwb-con-template 就可以知道,對(duì)應(yīng)的 jar 就是 jcs-platform-java-xxxxxx.jar。 HQL注入 經(jīng)過(guò)我不懈的努力,在 jsp 頁(yè)面中,找到了一個(gè)參數(shù)
那如何在后段代碼,找到對(duì)應(yīng)方法呢 很簡(jiǎn)單,例如: main.action!viewConTemplate.action==main.action?方法名=viewConTemplate portalweb-datasource.jsp則是前端的文件,后端也會(huì)存在對(duì)應(yīng)的路由,然后方法名則是下面的,getTemplateOpt
這里有typeFlag參數(shù),我們跟蹤getAllTemplates方法
直接對(duì)應(yīng)了接口名稱(chēng),往下跟,就到了數(shù)據(jù)庫(kù)層面了
直接是拼接的 sql 語(yǔ)句 于是就可以構(gòu)造請(qǐng)求方法了 jc6/platform/portalwb/dataSource/portalwb-data-source!getTemplateOpt.action?moduId=1&typeFlag=1
僅限于 or 1=1 也嘗試構(gòu)造數(shù)據(jù)包讀取數(shù)據(jù)庫(kù) SQL 注入 于是放棄對(duì)業(yè)務(wù)數(shù)據(jù)的審計(jì),翻了翻下面的 jar 包 jcs-eform-java-1.5.0-SNAPSHOT.jar
clobfield這個(gè)接口,網(wǎng)上有,也是我審計(jì)之后發(fā)現(xiàn)的,不過(guò)目標(biāo)系統(tǒng)存在這個(gè)接口,注入點(diǎn)變成了sKeyname 通過(guò)req獲取請(qǐng)求參數(shù),參數(shù)跟進(jìn)
clobfield1 存在查詢語(yǔ)句
直接拼接,無(wú)過(guò)濾 構(gòu)造訪問(wèn)參數(shù),需要滿足key包含readClob
XXE 漏洞 想著,這幾個(gè)servlet 有兩三個(gè)接口都存在漏洞,那么剩下的是不是也存在。
post方式,創(chuàng)建SAXReader,用來(lái)讀取xml信息,全程代碼就那么多,可見(jiàn)未過(guò)濾任何信息 路由訪問(wèn),因?yàn)槔^承HttpServlet,所以直接拼接訪問(wèn) dnslog 嘗試
然后就是讀取windows/win.ini
我感覺(jué)那么簡(jiǎn)單的漏洞,應(yīng)該是被提交了 果不其然 閱讀原文:原文鏈接 該文章在 2025/5/9 9:45:27 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |