Springboot之Actuator的滲透測試和漏洞利用


背景概述

Spring的生態很優秀,而使用Spring Boot的開發者也比較多。
Actuator是Spring Boot提供的對應用系統的監控和管理的集成功能,可以查看應用配置的詳細信息,例如自動化配置信息、創建的Spring beans信息、系統環境變量的配置信以及Web請求的詳細信息等。在 Actuator 啟用的情況下,如果沒有做好相關權限控制,非法用戶可通過訪問默認的執行器端點(endpoints)來獲取應用系統中的監控信息。常常使用不當或者一些不經意的疏忽,可能造成信息泄露等嚴重的安全隱患。

實際挖掘 actuator 配置不當的漏洞分如下兩步:

  1. 判斷和識別測試項目的web 應用采用的框架為 springboot 框架;
  2. 嘗試進行執行器端點路徑的枚舉(本文后面會有寫到),並根據實際情況加以利用

一、如何識別Spring Boot

通常有兩個方法:

  • 1.訪問WEB頁面,觀察地址欄或者標簽頁前面的icon圖標,是否為綠色小樹葉(開發者沒有修改的情況下,spring 框架默認為該圖標)


  • 2.構造錯誤的目錄或者文件名等,讓 Springboot 框架產生默認的報錯頁面(如開發人員沒有修改Springboot框架的默認400系列、500系列的報錯頁面,會報錯如下(也被稱為白標簽報錯頁),到這里基本可以確定Spring Boot框架。


綜合利用:

在實際中可以綜合兩個方法一起進行判斷,比如先觀察有無綠色樹葉圖標。
嘗試訪問不同的目錄,嘗試在不同目錄下400系列或500系列的報錯,觀察是否出現 Whitelabel Error Page 提示信息。當確定使用了springboot 框架后,就可以嘗試進行第二步的端點路徑的枚舉了

二、端點路徑的枚舉

通過手動或者腳本來枚舉測試網站的所有父目錄和子目錄,然后用腳本對前一步的每個目錄進行探測,確定是否存在 actuator 執行端點的路徑。

Actuator 提供的執行器端點分為兩類:原生端點和用戶自定義擴展端點
原生端點主要包括:

路徑 描述
/autoconfig 提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過
/beans 描述應用程序上下文里全部的Bean,以及它們的關系
/env 獲取全部環境屬性
/env/ 根據名稱獲取特定的環境屬性值
/dump 獲取線程活動的快照
/health 報告應用程序的健康指標,這些值由HealthIndicator的實現類提供
/info 獲取應用程序的定制信息,這些信息由info打頭的屬性提供
/metrics 報告各種應用程序度量信息,比如內存用量和HTTP請求計數
/shutdown 關閉應用程序,要求endpoints.shutdown.enabled設置為true
/trace 提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等)
/heapdump 返回一個GZip壓縮的JVM堆dump

需要注意

有些程序員會自定義/manage、/management 、項目App相關名稱為 spring 根路徑
Spring Boot Actuator 1.x 版本默認內置路由的起始路徑為 / ,2.x 版本則統一以 /actuator 為起始路徑
Spring Boot Actuator 默認的內置路由名字,如 /env 有時候也會被程序員修改,比如修改成 /appenv

對於尋找漏洞比較重要接口的有:

  • /env/actuator/env

    GET 請求 /env 會直接泄露環境變量、內網地址、配置中的用戶名等信息;當程序員的屬性名命名不規范,例如 password 寫成 psasword、pwd 時,會泄露密碼明文;

    同時有一定概率可以通過 POST 請求 /env 接口設置一些屬性,間接觸發相關 RCE 漏洞;同時有概率獲得星號遮掩的密碼、密鑰等重要隱私信息的明文。

  • /trace/actuator/httptrace

    一些 http 請求包訪問跟蹤信息,有可能在其中發現內網應用系統的一些請求信息詳情;以及有效用戶或管理員的 cookie、jwt token 等信息。

  • /refresh/actuator/refresh

    POST 請求 /env 接口設置屬性后,可同時配合 POST 請求 /refresh 接口刷新屬性變量來觸發相關 RCE 漏洞。

  • /restart/actuator/restart

    暴露出此接口的情況較少;可以配合 POST請求 /env 接口設置屬性后,再 POST 請求 /restart 接口重啟應用來觸發相關 RCE 漏洞。

  • /jolokia/actuator/jolokia

    可以通過 /jolokia/list 接口尋找可以利用的 MBean,間接觸發相關 RCE 漏洞、獲得星號遮掩的重要隱私信息的明文等。

三、漏洞的利用

在上一步,如果確定發現了 actuator 的配置漏洞,如需要證明或繼續利用該漏洞挖掘其他漏洞,進而組合利用等等,就需要進行其他操作,總結幾個常見利用場景

以下幾個漏洞屬於配置不當引起路由暴露。


1.讀取用戶的認證字段獲取敏感信息

​ 可以直接嘗試訪問網站目錄下的/trace 路徑,讀取用戶認證字段信息,比如在 trace 路徑下,會有用戶的敏感信息,可能包括 authorization(token、JWT、cookie)等字段,那么就可以利用泄露的認證信息,登陸自己的賬戶后,替換 JWT,token 字段繼續獲取其他用戶的信息,這些信息足以影響其他用戶,

2.數據庫賬戶密碼泄露

​ Actuator作為Spring Boot提供的對應用系統的監控和管理的集成,會監控 mysql之類的數據庫服務,那么通過監控信息有可能拿下 數據庫;直接通過訪問其/env 路徑獲取數據庫配置信息,比如數據庫的用戶名及密碼

3.外帶明文

​ 直接訪問/actuator/,/actuator/env這些執行器端點路徑,可能會看到大量接口和敏感信息,如mysql安裝路徑等等,脫敏之后的password等待。

4.heapdump后台賬號密碼

​ 嘗試訪問網站的/actuator/heapdump接口,下載返回的GZip 壓縮 堆轉儲文件,使用通過VisualVM/Android studio 加載,通過泄露站點的內存信息,查看到后台賬號信息和數據庫賬號

5.git 項目地址的泄露

一般在在/health 路徑,比如直接去訪問項目的 health 路徑,可探測到站點 git 項目地址,查看源碼:

安全修復措施建議

引入 security 依賴,打開安全限制並進行身份驗證;同時設置單獨的 Actuator 管理端口並配置不對外網開放。
比如,Spring Boot提供了安全限制功能。比如要禁用/env接口,則可設置如下:

endpoints.env.enabled= false


最后,推薦一個Spring Boot相關漏洞學習,利用方法合集,作為黑盒安全評估指南,非常詳細

參考地址:https://github.com/LandGrey/SpringBootVulExploit


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM