若依管理系統 v4.3.1 已發布,更新日誌:
若依管理系統使用了Apache Shiro,Shiro 提供了記住我(RememberMe)的功能,下次訪問時無需再登錄即可訪問。系統將密鑰硬編碼在代碼裡,且在官方文檔中並沒有強調修改該密鑰,導致框架使用者大多數都使用了默認密鑰。攻擊者可以構造一個惡意的對象,並且對其序列化、AES加密、base64編碼後,作為cookie的rememberMe欄位發送。Shiro將rememberMe進行解密並且反序列化,最終造成反序列化漏洞,進而在目標機器上執行任意命令。
檢測漏洞:ShiroConfig.java
是否包含 fCq+/xW488hMTCD+cmJ3aQ==
,如果是使用的默認密鑰則需要修改,防止被執行命令攻擊。
解決方案:升級版本到 >=v.4.3.1
,並且重新生成一個新的秘鑰替換cipherKey
,保證唯一且不要洩漏。
# Shiroshiro: cookie: # 設置密鑰,務必保持唯一性(生成方式,直接拷貝到main運行即可)KeyGenerator keygen = KeyGenerator.getInstance("AES"); SecretKey deskey = keygen.generateKey(); System.out.println(Base64.encodeToString(deskey.getEncoded())); cipherKey: zSyK5Kp6PZAAjlT+eeNMlg==
// 直接拷貝到main運行即可生成一個Base64唯一字符串KeyGenerator keygen = KeyGenerator.getInstance("AES");SecretKey deskey = keygen.generateKey();System.out.println(Base64.encodeToString(deskey.getEncoded()));
若依管理系統使用了PageHelper,PageHelper提供了排序(Order by)的功能,前端直接傳參完成排序。系統沒有做字符檢查,導致存在被注入的風險,最終造成資料庫中存儲的隱私信息全部洩漏。
檢測漏洞:BaseController.java
是否包含 String orderBy = pageDomain.getOrderBy();
,如果沒有字符檢查需要修改,防止被執行注入攻擊。
解決方案:升級版本到 >=v.3.2.0
,或者重新添加字符檢查String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
,防止注入繞過。
package com.ruoyi.common.utils.sql;import com.ruoyi.common.exception.base.BaseException;import com.ruoyi.common.utils.StringUtils;/** * sql操作工具類 * * @author ruoyi */public class SqlUtil{ /** * 僅支持字母、數字、下劃線、空格、逗號、小數點(支持多個欄位排序) */ public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"; /** * 檢查字符,防止注入繞過 */ public static String escapeOrderBySql(String value) { if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) { throw new BaseException("參數不符合規範,不能進行查詢"); } return value; } /** * 驗證 order by 語法是否符合規範 */ public static boolean isValidOrderBySql(String value) { return value.matches(SQL_PATTERN); }}
RuoYi <= v4.3.0
Shiro < 1.5.2 版本存在一處權限繞過漏洞,當受影響版本的Shiro框架結合Spring dynamic controllers使用時,未經授權的遠程攻擊者可以通過精心構造的請求包進行權限繞過,可能造成鑑權系統失效以及後臺功能暴露。
檢測漏洞:pom.xml
Shiro <=1.5.2
則版本存在漏洞。
解決方案:升級版本到 >=1.5.3
。
RuoYi <= v4.2.0
Fastjson < 1.2.68 版本存在一處反序列化漏洞,主要為autoType開關繞過的反序列化漏洞利用,惡意攻擊者可以通過該漏洞繞過autoType限制實現遠程代碼執行攻擊,從而獲取目標系統管理權限,建議儘快更新漏洞修復版本或採用臨時緩解措施加固系統。
檢測漏洞:pom.xml
Fastjson <=1.2.68
則版本存在漏洞。
解決方案:升級版本到 >=1.2.70
。
注意
若依平臺的默認口令 admin/admin123,請大家在線上環境一定要修改超級管理員的密碼。SysPasswordService.encryptPassword(String username, String password, String salt)
直接到main運行此方法,填充帳號密碼及鹽(保證唯一),生成md5加密字符串。
1. 用戶管理:用戶是系統操作者,該功能主要完成系統用戶配置。
2. 部門管理:配置系統組織機構(公司、部門、小組),樹結構展現支持權限。
3. 崗位管理:配置系統用戶所屬擔任職務。
4. 菜單管理:配置系統菜單,操作權限,按鈕權限標識等。
5. 角色管理:角色菜單權限分配、設置角色按機構進行數據範圍權限劃分。
6. 字典管理:對系統中經常使用的一些較為固定的數據進行維護。
7. 參數管理:對系統動態配置常用參數。
8. 通知公告:系統通知公告信息發布維護。
9. 操作日誌:系統正常操作日誌記錄和查詢;系統異常信息日誌記錄和查詢。
10. 登錄日誌:系統登錄日誌記錄查詢包含登錄異常。
11. 在線用戶:當前系統中活躍用戶狀態監控。
12. 定時任務:在線(添加、修改、刪除)任務調度包含執行結果日誌。
13. 代碼生成:前後端代碼的生成(java、html、xml、sql)支持CRUD下載 。
14. 系統接口:根據業務代碼自動生成相關的api接口文檔。
15. 服務監控:監視當前系統 CPU、內存、磁碟、堆棧等相關信息。
16. 在線構建器:拖動表單元素生成相應的HTML代碼。
17. 連接池監視:監視當前系統資料庫連接池狀態,可進行分析SQL找出系統性能瓶頸。