Java反序列化之commons-beanutils分析

TemplatesImpl類(lèi)是一個(gè)可序列化的類(lèi),其中有一個(gè)屬性_bytecodes,里面保存的數(shù)據(jù)在defineTransletClasses函數(shù)里將會(huì)被加載成類(lèi):
Java反序列化之commons-beanutils分析
Java反序列化之commons-beanutils分析

創(chuàng)新互聯(lián)長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為湯原企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)湯原網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

存在著這樣一條調(diào)用鏈條:
Java反序列化之commons-beanutils分析
簡(jiǎn)單來(lái)說(shuō),只要是能調(diào)用到getOutputProperties函數(shù),就能觸發(fā)包含在_bytecodes里的類(lèi)構(gòu)造函數(shù)被執(zhí)行(這個(gè)類(lèi)是由***者來(lái)實(shí)現(xiàn)的)。

Payload第一部分:
Java反序列化之commons-beanutils分析
創(chuàng)建了一個(gè)BeanComparator對(duì)象,將其作為參數(shù)用來(lái)創(chuàng)建一個(gè)PriorityQueue,向queue對(duì)象中添加兩個(gè)大整數(shù)對(duì)象(占位用)。
接著通過(guò)反射機(jī)制設(shè)置了comparator后面將會(huì)對(duì)比對(duì)象的屬性為outputProperties。

Payload第二部分:
Java反序列化之commons-beanutils分析
通過(guò)反射機(jī)制修改queue中數(shù)組保存的對(duì)比對(duì)象為內(nèi)置了***代碼的templates。
返回queue,將其生成序列化數(shù)據(jù)。

漏洞觸發(fā)邏輯:
反序列化的queue的時(shí)候,其對(duì)應(yīng)的PriorityQueue類(lèi)readObject函數(shù)會(huì)依次讀取序列化數(shù)據(jù)中的元素,放入到隊(duì)列中。然后,調(diào)用heapify函數(shù)進(jìn)行排序操作。
Java反序列化之commons-beanutils分析
最終,會(huì)調(diào)用到siftDownUsingComparator函數(shù),其中會(huì)調(diào)用comparator的compare方法:
Java反序列化之commons-beanutils分析
compare方法中將會(huì)調(diào)用被對(duì)比對(duì)象的對(duì)應(yīng)屬性get方法,這里的o1,o2就是之前傳入的templates對(duì)象,this.property就是之前通過(guò)反射機(jī)制修改的outputProperties。因此,最終就調(diào)用了TemplatesImpl的getOutputProperties函數(shù),觸發(fā)POC代碼執(zhí)行:
Java反序列化之commons-beanutils分析

Java反序列化之commons-beanutils分析

網(wǎng)頁(yè)標(biāo)題:Java反序列化之commons-beanutils分析
轉(zhuǎn)載注明:http://bm7419.com/article20/gihjco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站收錄、品牌網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈網(wǎng)頁(yè)設(shè)計(jì)公司、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化