目錄
XXL-JOB描述
一、漏洞詳情
二、環境建置
三、漏洞複現
四、修復建議
首頁 運維 安全 如何進行XXL-JOB API介面未授權存取RCE漏洞復現

如何進行XXL-JOB API介面未授權存取RCE漏洞復現

May 12, 2023 am 09:37 AM
api xxl job

XXL-JOB描述

XXL-JOB是一個輕量級分散式任務排程平台,其核心設計目標是開發快速、學習簡單、輕量級、易擴展。現已開放原始碼並接入多家公司線上產品線,開箱即用。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

一、漏洞詳情

這次漏洞核心問題是 GLUE 模式。 XXL-JOB 透過「GLUE模式」支援多語言以及腳本任務,此模式任務特點如下:

● 多語言支援:支援Java、Shell、Python、NodeJS、PHP、PowerShell…等類型。

● Web IDE:任務以原始碼方式維護在調度中心,支援透過 Web IDE 線上開發、維護。

● 動態生效:使用者在線上透過 Web IDE 開發的任務程式碼,遠端推送至執行器,即時載入執行。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如上圖所示,如果在 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

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

2. Maven下載所需的依賴

Idea開啟解壓縮後的原始程式碼,自動會進行pom中的相關依賴安裝,也可以在終端機使用maven指令下載所需的依賴

3.資料庫設定

調度資料庫初始化SQL腳本位置為:

/xxl-job/doc/db/tables_xxl_job.sql

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

因為本機未安裝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

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

###########################################################################################'我們就啟動了mysql容器,帳號為root,密碼為123456######使用navicat接連資料庫#########可以點選左下角,完成測試連線。在匯入的資料庫右鍵,選擇執行SQL文件,點選開始即可完成資料庫的匯入。 ##################4. 設定部署「調度中心」#########調度中心專案:xxl-job-admin#######作用:統一管理任務調度平台上調度任務,負責觸發調度執行,並提供任務管理平台。可依實際情況自行修改application.properties中的資料庫設定################執行XxlJobAdminApplication啟動排程中心#########我們使用建議的Springboot來管理執行器#########查看配置文件,發現xxl.job.executor.logpath參數,我們可以新建或修改該路徑,以防止程式執行出現問題。 Mac新系統不存在data路徑,發現使用mkdir建立路徑發現失敗,這是因為mac系統中關閉了Sip,使用sudo mount -uw /來解除Sip的限制。執行XxlJobExecutorApplication來啟動執行器。瀏覽器開啟//localhost:8080/,看到登入介面,確保啟動成功,預設登入帳號「admin/123456」##############注意點:##### #建議先建立/data/applogs/xxl-job,程式中多處設定檔使用該路徑######修改調度中心資料庫設定######Linux/Unix可使用lsof來檢視連接埠佔用情況,防止啟動失敗###

調度中心和執行器可以根據實際情況分開部署

三、漏洞複現

查看官方文件可以看到執行器RESTful API中觸發任務介面說明

如何进行XXL-JOB API接口未授权访问RCE漏洞复现其中的任務運行模式有以下幾種

如何进行XXL-JOB API接口未授权访问RCE漏洞复现查看GulueTypeEnum原始碼

如何进行XXL-JOB API接口未授权访问RCE漏洞复现所以我們利用Burpsuite來建構我們的POC

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

Tips:

修改glueSource時,如果執行未生效,請修改jobId

當重新啟動專案時,發現連接埠啟動異常,請關閉BurpSuite

由於XXL-JOB 官方版本原生自帶鑑權元件,開啟後可保障系統底層通訊安全。 XXL-JOB 作者表示正常情況下調度中心與執行器底層通訊是安全的,不存在遠端命令漏洞。但如果執行器未開啟存取令牌,會導致無法辨識並攔截非法的調度請求。惡意請求方可以藉助 GLUE 模式,推送惡意攻擊程式碼實現遠端攻擊。因此,XXL-JOB 作者認為該問題本質上不屬於 “漏洞”,官網版本提供了鑑權組件,開啟即可進行防護。

四、修復建議

1. 開啟XXL-JOB 自帶的鑑權元件:官方文件中搜尋“xxl.job.accessToken”,依照文件說明啟用即可。

2. 連接埠存取限制:透過設定安全群組限制只允許指定IP才能存取連接埠

以上是如何進行XXL-JOB API介面未授權存取RCE漏洞復現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP和Manticore Search開發指南:快速建立搜尋API PHP和Manticore Search開發指南:快速建立搜尋API Aug 07, 2023 pm 06:05 PM

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

如何在PHP專案中透過呼叫API介面來實現資料的爬取與處理? 如何在PHP專案中透過呼叫API介面來實現資料的爬取與處理? Sep 05, 2023 am 08:41 AM

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

如何處理Laravel API報錯問題 如何處理Laravel API報錯問題 Mar 06, 2024 pm 05:18 PM

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

使用Python將API資料儲存為CSV格式 使用Python將API資料儲存為CSV格式 Aug 31, 2023 pm 09:09 PM

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

React API呼叫指南:如何與後端API互動和資料傳輸 React API呼叫指南:如何與後端API互動和資料傳輸 Sep 26, 2023 am 10:19 AM

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

如何使用MongoDB開發一個簡單的 CRUD API 如何使用MongoDB開發一個簡單的 CRUD API Sep 19, 2023 pm 12:32 PM

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

Oracle API整合策略解析:實現系統間無縫通信 Oracle API整合策略解析:實現系統間無縫通信 Mar 07, 2024 pm 10:09 PM

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

Oracle API使用指南:探索資料介面技術 Oracle API使用指南:探索資料介面技術 Mar 07, 2024 am 11:12 AM

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

See all articles