0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java反序列化回顯方法

jf_vLt34KHi ? 來源:Tide安全團(tuán)隊(duì) ? 2023-03-07 10:58 ? 次閱讀

前言

在測試某反序列化漏洞,可以通過URLDNS鏈確定漏洞是否存在但在利用時(shí)遇到了困難,相關(guān)利用鏈可以執(zhí)行系統(tǒng)命令卻無法得到回顯。

4102a3c8-bc72-11ed-bfe3-dac502259ad0.png

因此需要在此基礎(chǔ)修改利用鏈達(dá)到命令回顯得目的,下邊記錄的即是此次修改的過程。

Java反序列化回顯方法

根據(jù)搜索到的資料給出的常見回顯方法有以下幾種:1、報(bào)錯(cuò)回顯:要求服務(wù)器將報(bào)錯(cuò)信息打印到頁面。2、寫文件:把執(zhí)行結(jié)果寫入靜態(tài)文件置于web目錄下再讀取結(jié)果。3、DNSLOG回顯:通過DNSLOG將執(zhí)行結(jié)果帶出(未實(shí)現(xiàn))。4、中間件回顯:獲取response對象,結(jié)果寫入response對象中帶出。5、.....

報(bào)錯(cuò)回顯

此法要求服務(wù)器將報(bào)錯(cuò)信息打印出來,修改要反序列化執(zhí)行的Java代碼將結(jié)果寫入異常再拋出即可實(shí)現(xiàn)。

4121bc68-bc72-11ed-bfe3-dac502259ad0.png

4159fe8e-bc72-11ed-bfe3-dac502259ad0.png

寫文件回顯

同樣修改yso中Gadgets要執(zhí)行的java代碼即可實(shí)現(xiàn),通過將執(zhí)行結(jié)果寫入web目錄下的靜態(tài)文件再讀取來實(shí)現(xiàn)。此法的缺點(diǎn)是當(dāng)目標(biāo)不存在可訪問靜態(tài)web目錄便無法使用了且要獲取web目錄的絕對路徑,更適用于已知開發(fā)框架的反序列化漏洞利用。

41999d1e-bc72-11ed-bfe3-dac502259ad0.png

41d5c262-bc72-11ed-bfe3-dac502259ad0.png

DNSLOG

一般作為檢測反序列化漏洞是否存在用,貼出URLDNS Gadget的驗(yàn)證過程。

41f02972-bc72-11ed-bfe3-dac502259ad0.png

42112866-bc72-11ed-bfe3-dac502259ad0.png

中間件回顯

中間件回顯是目前所有反序列化工具中最為通用的方法,相比于上述的方法中間件回顯有不需目標(biāo)出網(wǎng)、沒有目錄限制等優(yōu)勢。中間件回顯的原理簡單來說是在運(yùn)行的中間件中獲取request&response對象,通過request對象獲取執(zhí)行參數(shù)等后將執(zhí)行結(jié)果寫入response對象帶出完成回顯。已知目標(biāo)中間件為tomcat,參考feihong師傅公開的tomcat全版本回顯測試代碼來修改yso代碼實(shí)現(xiàn)利用。Tomcat回顯代碼:

42364024-bc72-11ed-bfe3-dac502259ad0.png

修改yso payload代碼:

4277dd22-bc72-11ed-bfe3-dac502259ad0.png

修改yso Gadgets代碼:

42a39052-bc72-11ed-bfe3-dac502259ad0.png

實(shí)現(xiàn)回顯:

42ca906c-bc72-11ed-bfe3-dac502259ad0.png

總結(jié)

由于本菜雞學(xué)習(xí)Java的路程不是很系統(tǒng),在很多地方卡殼嚴(yán)重,還好最終實(shí)現(xiàn)了相關(guān)exp的編寫。最后,感謝文中所用代碼和知識的作者師傅們。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2947

    瀏覽量

    104372
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4697

    瀏覽量

    68090
  • 漏洞
    +關(guān)注

    關(guān)注

    0

    文章

    203

    瀏覽量

    15333

原文標(biāo)題:參考

文章出處:【微信號:Tide安全團(tuán)隊(duì),微信公眾號:Tide安全團(tuán)隊(duì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何使用Serde進(jìn)行序列化反序列化

    Serde 是一個(gè)用于序列化反序列化 Rust 數(shù)據(jù)結(jié)構(gòu)的庫。它支持 JSON、BSON、YAML 等多種格式,并且可以自定義序列化反序列化方式。Serde 的特點(diǎn)是代碼簡潔、易于
    的頭像 發(fā)表于 09-30 17:09 ?1218次閱讀

    Java序列化的機(jī)制和原理

    對象的序列化反序列化也算是Java基礎(chǔ)的一部分,下面對Java序列化的機(jī)制和原理進(jìn)行一些介紹。Java
    發(fā)表于 07-10 07:27

    Virtex ISERDES_NODELAY對快速4線總線進(jìn)行反序列化怎么實(shí)現(xiàn)?

    你好朋友。我想使用Virtex ISERDES_NODELAY對快速4線總線進(jìn)行反序列化??偩€大約為700 MHz。我想確保反序列化的信號不是異相的。我的意思是,如果其中一個(gè)ISERDES由于內(nèi)部路由延遲而稍后將復(fù)位,則反序列化
    發(fā)表于 06-01 16:54

    c語言序列化反序列化有何區(qū)別

    這里寫自定義目錄標(biāo)題c語言序列化反序列化tplut.htplut.c測試代碼參考c語言序列化反序列化網(wǎng)絡(luò)調(diào)用,數(shù)據(jù)傳輸都需要把數(shù)據(jù)序列化
    發(fā)表于 07-14 07:32

    關(guān)于c語言序列化反序列化的知識點(diǎn)看完你就懂了

    關(guān)于c語言序列反序列化的知識點(diǎn)你就懂了
    發(fā)表于 10-15 08:47

    SpringMVC JSON框架的自定義序列化反序列化

    執(zhí)行trim方法進(jìn)行處理。此方案只有逐個(gè)添加注解,工作量較大。方案:實(shí)現(xiàn)ObjectDeserializer接口ObjectDeserializer接口為可以實(shí)現(xiàn)自定義反序列化實(shí)現(xiàn)接口,配合
    發(fā)表于 10-10 16:02

    理解PHP反序列化漏洞

    理解PHP反序列化漏洞
    發(fā)表于 09-07 11:03 ?7次下載
    理解PHP<b class='flag-5'>反序列化</b>漏洞

    java序列化反序列化范例和JDK類庫中的序列化API

    一、序列化反序列化的概念 把對象轉(zhuǎn)換為字節(jié)序列的過程稱為對象的序列化。 把字節(jié)序列恢復(fù)為對象的過程稱為對象的
    發(fā)表于 09-27 10:13 ?6次下載

    MAX9278和MAX9282 3.12Gbps的GMSL反序列化器的應(yīng)用和數(shù)據(jù)手冊免費(fèi)下載

    MAX9278和MAX9282千兆位多媒體串行鏈路(GMSL)反序列化器通過50Ω同軸電纜或100Ω屏蔽雙絞線(STP)電纜從GMSL串行器接收數(shù)據(jù),并在4個(gè)數(shù)據(jù)通道LVDS輸出(oLDI)中的3個(gè)上輸出反序列化數(shù)據(jù)。
    發(fā)表于 08-24 08:00 ?35次下載
    MAX9278和MAX9282 3.12Gbps的GMSL<b class='flag-5'>反序列化</b>器的應(yīng)用和數(shù)據(jù)手冊免費(fèi)下載

    static屬性為什么不會(huì)被序列化

    實(shí)現(xiàn)序列化反序列化為什么要實(shí)現(xiàn)Serializable接口?
    的頭像 發(fā)表于 07-15 11:03 ?1702次閱讀

    基于反序列化過采樣數(shù)據(jù)的時(shí)鐘和數(shù)據(jù)恢復(fù)單元

    電子發(fā)燒友網(wǎng)站提供《基于反序列化過采樣數(shù)據(jù)的時(shí)鐘和數(shù)據(jù)恢復(fù)單元.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 10:41 ?0次下載
    基于<b class='flag-5'>反序列化</b>過采樣數(shù)據(jù)的時(shí)鐘和數(shù)據(jù)恢復(fù)單元

    什么是序列化 為什么要序列化

    什么是序列化? “序列化”(Serialization )的意思是將一個(gè)對象轉(zhuǎn)化為字節(jié)流。 這里說的對象可以理解為“面向?qū)ο蟆崩锏哪莻€(gè)對象,具體的就是存儲在內(nèi)存中的對象數(shù)據(jù)。 與之相反的過程是“反序列化
    的頭像 發(fā)表于 09-14 17:22 ?2384次閱讀
    什么是<b class='flag-5'>序列化</b> 為什么要<b class='flag-5'>序列化</b>

    如何用C語言進(jìn)行json的序列化反序列化

    呢? 當(dāng)前,應(yīng)用最廣泛的C語言json解析庫當(dāng)屬cJSON,但是,使用cJSON讀json進(jìn)行序列化反序列化,需要根據(jù)key一個(gè)一個(gè)進(jìn)行處理,會(huì)導(dǎo)致代碼冗余,邏輯性不強(qiáng),哪有沒有更好的方法呢? 思路 在Android平臺,一般
    的頭像 發(fā)表于 10-07 11:05 ?1323次閱讀

    Spring Boot時(shí)配置JSON序列化選項(xiàng)的幾種方法

    看看配置序列化反序列化選項(xiàng)的最常用方法。 默認(rèn)配置 默認(rèn)情況下,Spring Boot的配置將禁用以下配置項(xiàng)。 MapperFeature.DEFAULT_VIEW_INCLUSION
    的頭像 發(fā)表于 10-09 10:26 ?1953次閱讀

    Java序列化怎么使用

    轉(zhuǎn)換方式就叫做序列化。將文件或者網(wǎng)絡(luò)傳輸中得到的 byte[] 數(shù)組轉(zhuǎn)換為 java 對象就叫做反序列化。 怎么使用 如果一個(gè) Java 對象要能被
    的頭像 發(fā)表于 10-10 14:19 ?394次閱讀