如何進行XXL-JOB API介面未授權存取RCE漏洞復現
XXL-JOB描述
XXL-JOB是一個輕量級分散式任務排程平台,其核心設計目標是開發快速、學習簡單、輕量級、易擴展。現已開放原始碼並接入多家公司線上產品線,開箱即用。
一、漏洞詳情
這次漏洞核心問題是 GLUE 模式。 XXL-JOB 透過「GLUE模式」支援多語言以及腳本任務,此模式任務特點如下:
● 多語言支援:支援Java、Shell、Python、NodeJS、PHP、PowerShell…等類型。
● Web IDE:任務以原始碼方式維護在調度中心,支援透過 Web IDE 線上開發、維護。
● 動態生效:使用者在線上透過 Web IDE 開發的任務程式碼,遠端推送至執行器,即時載入執行。
如上圖所示,如果在 GLUE 模式任務程式碼中寫入攻擊程式碼,推送到執行器執行即可造成遠端攻擊。
【漏洞描述】
XXL-JOB的Restful API介面或RPC介面沒有設定認證措施,未經授權的攻擊者可建構惡意請求,造成遠端執行指令
【漏洞評等】
高危險群
#【受影響版本】
XXL-JOB <= 2.2.0
二、環境建置
整體想法:原始碼下載->Maven安裝依賴->設定部署「調度中心」- >設定部署「執行器專案」->完成部署
本機開發環境:Java8 Maven3.6
1. Github下載原始碼
位址:https: //github.com/xuxueli/xxl-job/releases/tag/v2.2.0
2. Maven下載所需的依賴
Idea開啟解壓縮後的原始程式碼,自動會進行pom中的相關依賴安裝,也可以在終端機使用maven指令下載所需的依賴
3.資料庫設定
調度資料庫初始化SQL腳本位置為:
/xxl-job/doc/db/tables_xxl_job.sql
因為本機未安裝mysql,故使用docker安裝。
a) docker pull mysql:5.7
b) sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
調度中心和執行器可以根據實際情況分開部署
三、漏洞複現
查看官方文件可以看到執行器RESTful API中觸發任務介面說明
其中的任務運行模式有以下幾種
查看GulueTypeEnum原始碼
所以我們利用Burpsuite來建構我們的POC
Tips:
修改glueSource時,如果執行未生效,請修改jobId
當重新啟動專案時,發現連接埠啟動異常,請關閉BurpSuite
由於XXL-JOB 官方版本原生自帶鑑權元件,開啟後可保障系統底層通訊安全。 XXL-JOB 作者表示正常情況下調度中心與執行器底層通訊是安全的,不存在遠端命令漏洞。但如果執行器未開啟存取令牌,會導致無法辨識並攔截非法的調度請求。惡意請求方可以藉助 GLUE 模式,推送惡意攻擊程式碼實現遠端攻擊。因此,XXL-JOB 作者認為該問題本質上不屬於 “漏洞”,官網版本提供了鑑權組件,開啟即可進行防護。
四、修復建議
1. 開啟XXL-JOB 自帶的鑑權元件:官方文件中搜尋“xxl.job.accessToken”,依照文件說明啟用即可。
2. 連接埠存取限制:透過設定安全群組限制只允許指定IP才能存取連接埠
以上是如何進行XXL-JOB API介面未授權存取RCE漏洞復現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP和ManticoreSearch開發指南:快速建立搜尋API搜尋是現代Web應用程式中不可或缺的功能之一。無論是電子商務網站、社交媒體平台還是新聞門戶,都需要提供一個高效、準確的搜尋功能來幫助用戶找到他們感興趣的內容。而ManticoreSearch作為一個效能卓越的全文搜尋引擎,為我們提供了一個強大的工具來創建出色的搜尋API。本文將向您介紹如何

如何在PHP專案中透過呼叫API介面來實現資料的爬取與處理?一、介紹在PHP專案中,我們經常需要爬取其他網站的數據,並對這些數據進行處理。而許多網站提供了API接口,我們可以透過呼叫這些接口來取得資料。本文將介紹如何使用PHP來呼叫API接口,實現資料的爬取與處理。二、取得API介面的URL和參數在開始之前,我們需要先取得目標API介面的URL以及所需的

標題:如何處理LaravelAPI報錯問題,需要具體程式碼範例在進行Laravel開發時,常會遇到API報錯的情況。這些報錯可能來自於程式碼邏輯錯誤、資料庫查詢問題或是外部API請求失敗等多種原因。如何處理這些報錯是一個關鍵的問題,本文將透過具體的程式碼範例來示範如何有效處理LaravelAPI報錯問題。 1.錯誤處理在Laravel

在資料驅動的應用程式和分析領域,API(應用程式介面)在從各種來源檢索資料方面發揮著至關重要的作用。使用API資料時,通常需要以易於存取和操作的格式儲存資料。其中一種格式是CSV(逗號分隔值),它允許有效地組織和儲存表格資料。本文將探討使用強大的程式語言Python將API資料儲存為CSV格式的過程。透過遵循本指南中概述的步驟,我們將學習如何從API中檢索資料、提取相關資訊並將其儲存在CSV檔案中以供進一步分析和處理。讓我們深入了解使用Python進行API資料處理的世界,並釋放CSV格式的潛

ReactAPI呼叫指南:如何與後端API進行互動和資料傳輸概述:在現代的Web開發中,與後端API進行互動和資料傳輸是一個常見的需求。 React作為一個流行的前端框架,提供了一些強大的工具和功能來簡化這個過程。本文將介紹如何使用React來呼叫後端API,包括基本的GET和POST請求,並提供具體的程式碼範例。安裝所需的依賴:首先,確保在專案中安裝了Axi

如何使用MongoDB開發一個簡單的CRUDAPI在現代的網路應用程式開發中,CRUD(增刪改查)操作是非常常見且重要的功能之一。在本文中,我們將介紹如何使用MongoDB資料庫開發一個簡單的CRUDAPI,並提供具體的程式碼範例。 MongoDB是一個開源的NoSQL資料庫,它以文件的形式儲存資料。與傳統的關聯式資料庫不同,MongoDB沒有預先定義的模式

OracleAPI整合策略解析:實現系統間無縫通信,需要具體程式碼範例在當今數位化時代,企業內部系統之間需要相互通信和資料共享,而OracleAPI就是幫助實現系統間無縫通信的重要工具之一。本文將從OracleAPI的基本概念和原則入手,探討API整合的策略,最終給出具體的程式碼範例幫助讀者更好地理解和應用OracleAPI。一、OracleAPI基本

Oracle是一家全球知名的資料庫管理系統供應商,其API(ApplicationProgrammingInterface,應用程式介面)是一種強大的工具,可協助開發人員輕鬆地與Oracle資料庫互動和整合。在本文中,我們將深入探討OracleAPI的使用指南,向讀者展示如何在開發過程中利用資料介面技術,同時提供具體的程式碼範例。 1.Oracle
