
在當前復雜的網絡安全環境中,服務器端請求偽造(SSRF)漏洞已成為企業面臨的嚴峻挑戰之一。這類漏洞允許攻擊者利用服務器發起惡意請求,進而訪問內部系統或外部資源,對企業數據安全和業務連續性構成嚴重威脅。XXL-JOB-admin 調度中心被曝出SSRF漏洞(CVE-2022-43183),再次為我們敲響了警鐘。本文將圍繞這一典型案例,深入探討 SSRF 漏洞的原理、復現過程、以及企業應如何構建堅固的防護體系,旨在為廣大開發者和安全從業者提供一份全面的技術指南和實踐參考。
?
01
漏洞概覽
/ TINGYUN
XXL-JOB 是許雪里(XXL-JOB)社區的一款基于 java 語言的分布式任務調度平臺。該項目由3個部分組成,xxl-job-admin 主要提供任務調度中心的web頁面,xxl-job-executor-samples 是 xxl-job 執行器的示例代碼,xxl-job-core 封裝了 xxl-job-admin 和 xxl-job-executor-sample 核心代碼。
XXL-JOB v2.3.1 之前版本存在安全漏洞,該漏洞源于組件 /admin/controller/JobLogController.java 中包含服務器端請求偽造(SSRF)。
02
風險自查
/ TINGYUN
為了及時發現并規避潛在風險,企業應立即對當前使用的 xxl-job 版本進行自查。您可以通過聽云 ASPM 的組件風險功能或其他專業的安全檢測工具,核查您的 xxl-job 版本是否處于以下受影響的范圍內:
?
xxl-job
03
如何修復受影響的程序
/ TINGYUN
升級到 xxl-job 2.4.0 及以上版本:
-
?XXL-JOB 3.x 版本開始要求使用 JDK17。對于仍在使用 JDK1.8 的用戶,目前支持 JDK1.8 的最新穩定版本是 XXL-JOB 2.5.0。請根據您的實際環境選擇合適的升級路徑,確保系統兼容性。 ?
04
漏洞的原理及利用
/ TINGYUN
漏洞的原理
理解 SSRF 漏洞的深層原理對于有效防范至關重要。XXL-JOB-admin 調度中心 SSRF 漏洞的產生,源于其在處理執行器調度日志請求時,對執行器 URL 地址的校驗不足。
xxl-job 調度中心后臺用戶在查看執行器調度日志時,請求中會指定執行器的 URL 地址,讓調度中心去該 URL 地址的執行器獲取調度日志。由于調度中心服務發起對執行器的請求時沒有對該url地址進行校驗,故惡意攻擊者可以指定服務器請求的 URL 地址,導致 xxl-job 調度中心后臺存在 SSRF 漏洞。
?
漏洞復現
1.搭建環境
我們選擇 XXL-JOB v2.3.0,筆者為了方便分析源碼,用源碼搭建,也可以用 Docker 搭建,
源碼地址:https://github.com/xuxueli/xxl-job/releases/tag/2.3.0
xxl-job快速入門:https://www.xuxueli.com/xxl-job/#%E4%BA%8C%E3%80%81%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8
//啟動 xxj-job-admin
//啟動編輯器
至此我們的復現環境準備完畢。
2.登錄并執行任務
訪問http://{hostip}:8080/xxl-job-admin/登錄,然后來到【任務管理】,執行任務(確保我們的執行器已經正確連接到 xxl-job-admin)。

3.查看調度日志并抓取數據包
用 yso-java hack 構造序列化數據任務執行完成后,進入【調度日志】頁面,找到剛剛執行的任務日志,并抓取原始數據包。這個數據包將包含 executorAddress 字段,它是 SSRF 漏洞利用的關鍵。
4.修改數據包并發送請求?
修改數據包中的 executorAddress 字段為我們要請求的地址,然后發送請求。

5.驗證漏洞利用成功
如果一切順利,您將在 DNSLOG 平臺收到來自 XXL-JOB 調度中心服務器的請求信息,這表明 SSRF 漏洞已成功被利用。
漏洞追蹤
為了更深入地理解漏洞的成因,我們對 XXL-JOB 的相關代碼進行了追蹤分析:
1.參數接收與傳遞
觀從 POST?
/xxl-job-admin/joblog/logDetailCat?
接口接收?String executorAddress 參數,
然后直接帶入到
XxlJobScheduler.getExecutorBiz(executorAddress) 中執行。

2.缺乏安全校驗
通過觀察 XxlJobScheduler.java,發現傳入的 executorAddress 沒有經過特別的安全校驗,返回了接口類 executorBiz。

3.接口類功能定義
接口類 executorBiz 中定義了遠程執行器應該具備的功能(心跳、觸發任務、kill、日志等)。其中日志功能有兩個實現類,其中 ExecutorBizClinent 下面會提到的。

4.日志方法調用
接下來我們回到原來的代碼,進入下一步,這時候調用了接口類 executorBiz 的 log 方法。

5.ExecutorBizClient 的初始化與拼接
我們找到 executorBiz 的實現類 ExecutorBizeClient,調用 log 函數前的初始化步驟,會通過構造函數在每一個 addresssUrl 后面加一個“/”,然后返回 XxlJobRemotingUtil.postBody 的調用結果,還會在初始化后的 addressUrl 拼接“log”,所以實際調用的 addressUrl 應該是http://{addressUrl}/log。

6.直接發起POST請求
接下來我們跟到?
XxlJobRemotingUtil.postBody可以看到直接對?
url發起了POST請求。
小結:從整條鏈路上來看,從 POST /xxl-job-admin/joblog/logDetailCat 接口接收用戶輸入的 executorAddress 字段,只做了一些常規的校驗和拼接,沒有經過任何安全校驗,直接被服務端發起請求,滿足了 SSRF 漏洞的利用條件。
?
05
聽云 ASPM 如何提供幫助
/ TINGYUN
面對日益復雜的網絡安全威脅,專業的應用安全性能管理(ASPM)工具顯得尤為重要。聽云 ASPM 用戶可以通過威脅感知,組件風險,來實時觀察自己的系統是否存在依賴 0day 安全風險以及 1day 或 nday 的組件風險。針對上述 xxl-job 漏洞,聽云 ASPM 能夠發揮以下關鍵作用:

SSRF漏洞發現
當 xxl-job-admin 通過聽云探針插樁后,惡意攻擊者嘗試 SSRF 攻擊,聽云 ASPM 能夠立即發現 SSRF 漏洞。


威脅感知詳情
通過 ASPM,用戶可以看到 SSRF 攻擊的請求信息和堆棧信息,幫助企業快速定位觸發漏洞的位置。

威脅感知詳情-修復方案
ASPM 還提供 SSRF 漏洞的原理解析和修復示例,幫助開發人員理解和修復漏洞。
?
06
企業如何應對SSRF漏洞:
/ TINGYUN
在企業 Web 應用開發過程中,開發者常常會忽視對用戶輸入的安全校驗,從而引發 SSRF 漏洞。例如,《CVE-2022-43183 XXL-JOB-admin 調度中心 SSRF 漏洞》就是典型案例。應對這類問題的核心在于確保請求地址的可信性:pache Tomcat 反序列化漏洞(CVE-2025-24813)的曝光,再次凸顯了在當前復雜多變的網絡環境中,開發人員定期更新依賴項、檢查安全架構以及部署專業安全工具的重要性。這一事件不僅是對技術人員的一次警醒,也證明了聽云 ASPM 類型應用安全性能管理工具在 0day 漏洞防護、組件安全等應用安全領在企業 Web 應用開發過程中,開發者常常會忽視對用戶輸入的安全校驗,從而引發 SSRF 漏洞。例如,《CVE-2022-43183 XXL-JOB-admin 調度中心 SSRF 漏洞》就是典型案例。應對這類問題的核心在于確保請求地址的可信性:域中的不可替代作用。只有持續關注安全動態,積極采取防護措施,才能在網絡空間中筑牢堅實的防線,確保業務的持續穩定運行。
?
嚴格的輸入校驗:
如果請求地址由用戶提供,應通過嚴格的安全校驗,例如結合白名單與黑名單機制。
?
數據庫入庫前校驗:
如果請求地址來源于服務器數據庫,則需要在入庫前就進行安全校驗,確保其合法性與安全性。
?
網絡策略限制:
通過合理的網絡策略配置限制敏感資源訪問,例如在防火墻、Nginx、云安全組中阻斷應用對內部管理端口、元數據服務(如 169.254.169.254)及非必要外網地址的訪問,從而降低 SSRF 攻擊利用的可能性。?
?
借助專業工具:
借助專業的應用安全性能管理(ASPM)工具, 企業能夠及時發現和追蹤應用中的安全缺陷,從而有效筑牢整體安全防線。 ?
?
【CVE-2022-43183 XXL-JOB-admin?調度中心 SSRF 漏洞】的曝光,再次提醒我們 SSRF 漏洞的普遍性和危害性。面對日益嚴峻的網絡安全形勢,企業必須從開發、部署到運維的各個環節,全面加強安全防護。通過嚴格的輸入校驗、合理的網絡策略配置以及引入專業的 ASPM 工具,企業能夠有效抵御 SSRF 等各類安全威脅,確保業務的持續穩定運行。
?
參考:
https://github.com/xuxueli/xxl-job/issues/3002
聲明:
本文的所有漏洞環境均為本地測試環境,且本文僅供學習、安全研究參考使用,請勿用作違法用途,否則后果自負。
?
推薦閱讀

?
作為一名運維工程師,我深知運維數據對于業務的重要性。它可以幫助我們了解業務的健康狀況、性能指標和故障情況,從而及時采取措施保證業務的正常運行。但是,運維數據往往是非常龐大和復雜的,如果不能有效地處理和管理,很容易導致信息的混亂和失控,甚至給業務帶來嚴重的影響。
2023-05-30
在當今信息技術快速發展的時代,軟件產品的開發和配置管理是各行業中不可或缺的重要環節。為了提高工作效率、確保軟件質量和降低風險,許多企業紛紛引入軟件產品配置管理系統(簡稱SPCMS)。本文將探討它的定義、功能以及其在實際應用中的重要性。
2024-01-22
AIOps是人工智能和IT運營的融合,通常被稱為解決方案,代表著有效的自動化。但在許多情況下,它只解決了一小部分問題——對警報進行分類,并將數據級別降低到更易于管理的程度。為了充分挖掘其潛力,組織應該為AIOps尋找更復雜的用例,這些用例可以擴展到IT操作之外——想讓DevOps自動化的AI,或者更好的BizDevSecOps。
2023-03-14













