当前位置:网站首页 >  攻略

织梦模板常见漏洞修复与安全加固实操指南

时间:2026年06月16日 05:49:10 来源:易频IT社区

漏洞原理与影响范围

织梦CMS(Dedecms)模板系统存在多个高危漏洞,主要源于模板解析机制不完善和权限验证缺失。攻击者可通过上传恶意模板文件获取服务器权限,或通过模板注入执行任意代码。受影响版本包括V5.7及以下所有版本,特别是未及时更新安全补丁的系统。

环境准备与检测

漏洞检测工具

下载专用检测脚本到本地环境:

wget https://raw.githubusercontent.com/dedecms-scanner/dedecms-vuln-check/main/check.py
python check.py -u http://yourdomain.com

备份原始文件

执行完整备份命令:

tar -czf dede_backup_$(date +%Y%m%d).tar.gz /var/www/html/dedecms/
mysqldump -u root -p dedecms_db > dede_db_$(date +%Y%m%d).sql

核心漏洞修复步骤

1. 模板文件上传漏洞修复

编辑文件 /dede/templets_one_edit.php,在第85行附近找到上传处理代码,修改为:

// 原漏洞代码替换
$uploadfile = $cfg_basedir.$cfg_templets_dir."/".$filename;
// 修改后安全代码
$allowed_ext = array('htm', 'html', 'css', 'js');
$file_ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array(strtolower($file_ext), $allowed_ext)) {
ShowMsg("禁止上传非模板文件", "-1");
exit();
}
$filename = preg_replace('/[^a-zA-Z0-9_\-\.]/', '', $filename);
$uploadfile = $cfg_basedir.$cfg_templets_dir."/".$filename;

2. 模板代码注入修复

修改 /include/dedetag.class.php,在ParseTemplet()函数开头添加:

function ParseTemplet($filename) {
// 新增安全过滤
if(preg_match('/\<\?php|\<\?=|eval\(|base64_decode|system\(|exec\(/i', file_get_contents($filename))) {
die('检测到恶意代码,模板解析终止');
}
// 原有代码继续...
}

3. 目录权限加固

执行以下权限设置命令:

chmod 755 /var/www/html/dedecms/
chmod 644 /var/www/html/dedecms/.php
chmod 000 /var/www/html/dedecms/data/
chmod 000 /var/www/html/dedecms/uploads/
chmod 644 /var/www/html/dedecms/templets/.htm
chmod 644 /var/www/html/dedecms/templets/.html

配置文件加固

数据库配置文件

修改 /data/common.inc.php 文件权限:

chmod 400 /data/common.inc.php
chown www-data:www-data /data/common.inc.php

安全配置文件

创建 /data/safe.inc.php 文件:

 $value) {
$_GET[$key] = htmlspecialchars($value, ENT_QUOTES);
}
?>

在 /config.inc.php 文件开头添加:

织梦模板常见漏洞修复与安全加固实操指南

require_once(dirname(__FILE__).'/data/safe.inc.php');

Nginx安全配置

在Nginx配置文件中添加以下规则:

location ~ \.(php|php5)$ {
禁止访问敏感目录
location ~ ^/(data|uploads|templets)/.\.php$ {
deny all;
}
限制文件上传大小
client_max_body_size 10M;
安全头部
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";
}
禁止访问模板文件
location ~ \.(tpl|htm|html)$ {
if ($request_uri ~ "\.(tpl|htm|html)$") {
return 403;
}
}

Apache安全配置

在.htaccess文件中添加:


Order Allow,Deny
Deny from all


Order Allow,Deny
Allow from all

禁止目录浏览
Options -Indexes
保护配置文件

Order Allow,Deny
Deny from all

模板文件安全检查

扫描恶意代码

使用以下脚本扫描模板文件:

!/bin/bash
find /var/www/html/dedecms/templets -name ".htm" -o -name ".html" | while read file; do
if grep -q "<\?php\|eval(\|base64_decode" "$file"; then
echo "发现恶意文件: $file"
自动备份并清理
cp "$file" "$file.bak"
sed -i '/<\?php\|eval(\|base64_decode/d' "$file"
fi
done

验证修复效果

创建测试文件 test_vuln.html:


{dede:php}
echo "测试代码";
{/dede:php}

上传到模板目录,访问测试页面应显示空白或错误信息,而不是执行PHP代码。

自动化监控脚本

创建监控脚本 /root/check_dede.sh:

!/bin/bash
LOG_FILE="/var/log/dede_security.log"
TEMPLATE_DIR="/var/www/html/dedecms/templets"
检查文件修改
find $TEMPLATE_DIR -type f -name ".htm" -o -name ".html" | while read file; do
if [ -f "$file" ]; then
MTIME=$(stat -c %Y "$file")
NOW=$(date +%s)
DIFF=$((NOW - MTIME))
if [ $DIFF -lt 300 ]; then
echo "$(date): 文件 $file 在5分钟内被修改" >> $LOG_FILE
发送警报
echo "警报:模板文件异常修改" | mail -s "织梦安全警报" admin@yourdomain.com
fi
fi
done
检查新增文件
find $TEMPLATE_DIR -type f -mmin -5 | while read file; do
echo "$(date): 发现新增文件 $file" >> $LOG_FILE
done

添加到crontab每5分钟执行一次:

/5     /root/check_dede.sh

应急响应流程

发现漏洞被利用时

立即执行以下操作:

  • 1. 立即备份当前状态:cp -r /var/www/html/dedecms /tmp/dede_emergency_backup
  • 2. 关闭网站写入权限:chmod -R 555 /var/www/html/dedecms
  • 3. 检查最近修改的文件:find /var/www/html/dedecms -type f -mmin -10
  • 4. 审查系统进程:ps aux | grep -E "(wget|curl|python|perl|sh)"
  • 5. 检查网络连接:netstat -anp | grep ESTABLISHED

恢复步骤

确认安全后执行恢复:

 从备份恢复
tar -xzf dede_backup_20240101.tar.gz -C /var/www/html/
mysql -u root -p dedecms_db < dede_db_20240101.sql
重新应用安全配置
chmod 755 /var/www/html/dedecms/
chmod 644 /var/www/html/dedecms/templets/.htm
chmod 000 /var/www/html/dedecms/data/

长期维护建议

  • 每周检查织梦官方安全公告:http://www.dedecms.com/security/
  • 每月执行一次完整的安全扫描:nmap -sV -p 80,443 yourdomain.com
  • 每季度更新一次服务器系统:apt update && apt upgrade -y
  • 保留至少30天的网站日志:/var/log/nginx/access.log
  • 定期测试备份恢复流程,确保备份有效

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图