近幾年來,黑客攻擊行為呈現出日益復雜和隱蔽的趨勢,對個人和組織的安全造成了嚴重威脅。黑客們不斷尋找新的漏洞和安全漏洞,利用各種手段進行網絡攻擊,包括惡意軟件、網絡釣魚、勒索軟件等。因此,我們每個人都需要關注漏洞風險,加強網絡安全意識,及時更新系統補丁。目前有網友反饋受到攻擊勒索,雖然我們的商業客戶并沒受到影響,但也請盡快升級補丁,避免未知的風險!
黑客攻擊現在很頻繁,請一定重視!!!
一、升級freemarker補丁,解決執行任意命令問題
升級freemarker補丁,解決Freemarker模板注入導致遠程命令執行, 遠程攻擊者可利用該漏洞調用在系統上執行任意命令
無論你的jeecg是那個版本都可以采用此方案:重寫freemarker的類src/main/java/freemarker/template/Configuration.java方式,在實例化Configuration方法里面默認加入下面代碼
//freemarker模板注入問題 禁止解析ObjectConstructor,Execute和freemarker.template.utility.JythonRuntime。
this.setNewBuiltinClassResolver(TemplateClassResolver.SAFER_RESOLVER);
參考代碼:針對freemaker2.3.31的重寫Configuration初始化,具體大家請按照自己的版本去重寫覆蓋。
二、升級積木報表到最新版1.6.5,解決無權限可訪問問題
1、升級依賴版本號
修改pom.xml中積木報表的依賴版本號
<!-- 積木報表-->
<dependency><groupId>org.jeecgframework.jimureport</groupId><artifactId>jimureport-spring-boot-starter</artifactId><version>1.6.5</version><exclusions><exclusion><artifactId>autopoi-web</artifactId><groupId>org.jeecgframework</groupId></exclusion></exclusions>
</dependency>
<dependency><groupId>org.jeecgframework.jimureport</groupId><artifactId>jimureport-nosql-starter</artifactId><version>1.6.0</version>
</dependency>
2、修改yml配置
jeecg:jmreport:mode: dev#多租戶模式,默認值為空(created:按照創建人隔離、tenant:按照租戶隔離) (v1.6.2+ 新增)saasMode: # 平臺上線安全配置(v1.6.2+ 新增)firewall:# 數據源安全 (開啟后,不允許使用平臺數據源、SQL解析加簽并不允許查詢數據庫)dataSourceSafe: false# 低代碼開發模式(dev:開發模式,prod:發布模式—關閉在線報表設計功能,分配角色admin、lowdeveloper可放開限制)lowCodeMode: dev
3、修改org.jeecg.config.jimureport.JimuReportTokenService加入實現新方法
@Overridepublic String[] getRoles(String token) {String username = JwtUtil.getUsername(token);Set roles = sysBaseApi.getUserRoleSet(username);if(CollectionUtils.isEmpty(roles)){return null;}return (String[]) roles.toArray(new String[roles.size()]);}
4.執行升級sql
這里做的是從1.4.2升級到1.6.5,有升級sql如下,其他版本請查看積木報表升級日志
ALTER TABLE jimu_report_data_source
ADD COLUMN tenant_id varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租戶標識' AFTER connect_times;ALTER TABLE jimu_dict
ADD COLUMN tenant_id varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '多租戶標識' AFTER type;ALTER TABLE jimu_report
ADD COLUMN tenant_id varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '多租戶標識' AFTER js_str;ALTER TABLE jimu_report_data_source
ADD COLUMN type varchar(10) NULL COMMENT '類型(report:報表;drag:儀表盤)';
UPDATE jimu_report_data_source SET type= 'report';CREATE TABLE jimu_report_share (id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主鍵',report_id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '在線excel設計器id',preview_url varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '預覽地址',preview_lock varchar(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密碼鎖',last_update_time datetime NULL DEFAULT NULL COMMENT '最后更新時間',term_of_validity varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '有效期(0:永久有效,1:1天,2:7天)',status varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '是否過期(0未過期,1已過期)',preview_lock_status varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密碼鎖狀態(0不存在密碼鎖,1存在密碼鎖)',PRIMARY KEY (id) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '積木報表預覽權限表' ROW_FORMAT = DYNAMIC;
三、其他官方漏洞通知專題
【漏洞通知】JeecgBoot 修復 Freemarker 模板注入漏洞
- https://blog.csdn.net/zhangdaiscott/article/details/132304391
積木報表 JimuReport v1.6.2-GA5 版本發布 — 高危 SQL 漏洞安全加固版本
- https://my.oschina.net/jeecg/blog/10106055
【漏洞通知】JeecgBoot 修復SQL注入風險
- https://my.oschina.net/jeecg/blog/10107636
【漏洞通知】Apache Shiro又爆認證繞過漏洞CVE-2023-34478
- https://blog.csdn.net/zhangdaiscott/article/details/131914652
JeecgBoot升級Nacos至2.2.3版本解決raft漏洞問題
- https://blog.csdn.net/zhangdaiscott/article/details/131730495
【高危安全通告】fastjson≤1.2.80反序列化漏洞
- https://blog.csdn.net/zhangdaiscott/article/details/124960217
四、友情提示
黑客攻擊,一般是通過控制服務器,搞壞數據庫來進行勒索,所以定時備份數據庫非常重要。
這里附上一個備份數據庫的腳本,供大家參考
#!/bin/bash
#數據庫的定時備份
#定義備份的路徑
BACKUP=/var/lib/mysql
DATETIME=`date +%Y_%m_%d_%H%M%S`
#echo "$DATETIME"
echo "=====start backup to $BACKUP/$DATETIME/$DATETIME.tar.gz======"
#主機
HOST=localhost
DB_USER=root
DB_PWD=123456
#要備份的數據庫名稱
DATABASE=jeecg-boot
#創建備份的路徑,如果路徑不存在則創建
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#執行mysql的備份數據庫指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包備份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#刪除臨時目錄
rm -rf $BACKUP/$DATETIME
#刪除10天前的備份文件
#在$backup目錄下按照時間找10天前的名稱為*.tar.gz的文件,-exec表示執行找到的文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm rf {} \;
echo "===========backup success======"