dede404页面漏洞如何被黑客攻击利用?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

漏洞核心原理:404页面被“劫持”执行PHP代码

这个漏洞的本质,并不是404页面本身有问题,而是DEDECMS处理404页面的逻辑存在缺陷,导致黑客可以构造一个特殊的URL,让服务器错误地将这个URL当作一个PHP文件来执行。

dede404页面漏洞被黑客攻击
(图片来源网络,侵删)

让我们一步步拆解这个过程:

正常的404流程

  1. 用户访问一个不存在的页面,http://your-site.com/xxxxx.html
  2. Web服务器(如Apache或Nginx)发现这个文件不存在,于是触发404错误。
  3. DEDECMS的php页面被调用,向用户显示一个友好的“页面不存在”的提示。

黑客攻击流程(漏洞利用)

这个漏洞利用了DEDECMS一个叫做"安全模式"的机制,以及服务器的一个配置特性。

  • 前提条件A:DEDECMS开启了“安全模式” 在DEDECMS后台,有一个“系统” -> “系统基本参数” -> “核心设置” -> “是否开启防黑客入侵”的选项,开启后,DEDECMS会检查HTTP_REFERER(来路)信息,如果请求的来源不是本站,系统会进行拦截或重定向。

  • 前提条件B:Web服务器(Apache)的mod_rewriteMultiViews特性 很多网站为了美化URL,会开启mod_rewrite(URL重写),而MultiViews是一个特性,它允许服务器在没有精确匹配文件时,尝试根据文件扩展名进行模糊匹配。

    dede404页面漏洞被黑客攻击
    (图片来源网络,侵删)

漏洞攻击步骤:

  1. 构造恶意URL: 黑客会构造一个看起来像图片、CSS或JS文件,但实际包含PHP代码的URL。 http://your-site.com/plus/404.php?url=a.jpg

  2. 绕过“安全模式”: 黑客在请求这个URL时,会伪造HTTP_REFERER头部,将其设置为当前网站的域名Referer: http://your-site.com/。 这样,DEDECMS的“安全模式”检查就会认为这是一个“来自本站”的合法请求,从而放行。

  3. 触发服务器漏洞

    • 服务器收到对 plus/404.php?url=a.jpg 的请求。
    • 它首先会检查 php 是否存在,存在则执行。
    • php 文件中,DEDECMS会获取 url 参数的值,即 a.jpg
    • 关键漏洞点:DEDECMS的代码会尝试包含这个文件:@include(DEDEROOT.'/'.$url);
    • 由于服务器开启了MultiViews,当它找不到 a.jpg 时,会尝试寻找 a.jpg.php,如果这个文件不存在,服务器会将其作为404请求,并最终交由 php 处理。
    • 如果黑客的URL是 http://your-site.com/plus/404.php?url=/../../shell.php,情况就完全不同了,这里的 是目录遍历,/../../shell.php 会尝试从网站根目录向上找,然后向下进入 plus 目录,找到 shell.php
    • 更常见的攻击方式是:黑客会先通过其他漏洞(如文件上传漏洞)向你的网站上传一个包含恶意PHP代码的文件,images/shell.jpg(虽然后缀是jpg,但内容是PHP代码)。
    • 他就可以构造如下URL来执行这个木马: http://your-site.com/plus/404.php?url=images/shell.jpg
  4. 执行恶意代码: 当 php 执行 @include('images/shell.jpg'); 时,因为 images/shell.jpg 的内容是PHP代码,所以这段代码就会被服务器当作PHP脚本执行。

    dede404页面漏洞被黑客攻击
    (图片来源网络,侵删)

一句话总结漏洞原理通过伪造Referer绕过DEDECMS的安全检查,再利用php文件包含机制,执行黑客预先上传到服务器上的任意PHP文件。


攻击后果(黑客能做什么?)

一旦黑客通过这个漏洞成功执行了PHP代码(即所谓的“Webshell”),你的网站就完全沦陷了,他们可以:

  1. 网站挂马:在你的网站上植入恶意代码,访问你网站的用户可能会被跳转到色情、赌博等恶意网站,导致网站被搜索引擎降权或封禁。
  2. 数据窃取:轻松获取网站的数据库信息,包括网站后台管理员的用户名和密码、网站用户的注册信息、订单数据等敏感信息。
  3. 服务器权限获取:如果Web服务器权限配置不当,黑客可能利用Webshell进一步提权,获取服务器的最高控制权,从而控制整个服务器,攻击同服务器上的其他网站。
  4. 发送垃圾邮件:利用你的服务器资源发送大量垃圾邮件,导致你的IP被列入黑名单。
  5. 植入后门:在网站中留下永久性的后门,即使你修复了404漏洞,黑客也能通过其他方式重新控制网站。

解决方案与修复方法

如果你怀疑或确认网站被此漏洞攻击,请立即按以下步骤操作:

紧急响应:隔离与清除

  • 立即断网:如果情况严重,暂时关闭网站或从服务器上拔掉网线,防止损失扩大。
  • 查找并删除Webshell:通过FTP或服务器文件管理器,全面搜索网站目录下所有可疑文件,特别注意文件名怪异、文件大小异常(通常很小,几KB)、最后修改时间不合理的文件,黑客上传的Webshell文件可能伪装成图片、CSS等,如 shell.jpg, config.bak, 201x.php 等。
  • 清理数据库:检查数据库中是否有被篡改的数据,如被添加的广告链接、恶意内容等。

根本修复:堵上漏洞

  • 官方升级(推荐) 这是最彻底的解决方法,访问DEDECMS官方网站,下载并安装最新版本的CMS,新版本已经修复了这个逻辑漏洞。

  • 修改404.php文件(适用于无法立即升级的用户) 打开 /plus/404.php 文件,找到类似下面这行代码:

    // ... 其他代码 ...
    if($typeid > 0 && $action == 'index')
    {
        include(DEDEROOT."/index.php");
        exit();
    }
    else
    {
        // 这里是漏洞的关键点
        @include(DEDEROOT.'/'.$url);
    }
    // ... 其他代码 ...

    @include(DEDEROOT.'/'.$url); 这一行删除或注释掉(在行首加 )。 修改后,你的404页面将不再尝试包含任何文件,只会显示固定的错误信息。 这虽然修复了漏洞,但也失去了DEDECMS原有的智能404跳转功能,这是一个权衡。

  • 修改服务器配置(从根源上杜绝) 在Apache的配置文件(httpd.conf)或虚拟主机配置中,找到你的网站配置部分,添加或修改以下内容,以禁用MultiViews特性:

    <Directory "你的网站根目录">
        Options -MultiViews
        # ... 其他配置 ...
    </Directory>

    然后重启Apache服务,这可以防止服务器进行文件扩展名的模糊匹配,从而堵住文件包含的路径。

长期安全加固

  • 及时更新:保持CMS程序、插件、主题都更新到最新版本。
  • 使用强密码:后台管理密码、数据库密码必须是复杂且唯一的。
  • 限制后台登录IP:如果条件允许,在服务器层面或使用插件,只允许特定IP地址访问后台登录页面。
  • 定期备份:定期备份网站文件和数据库,并将备份文件保存在安全的地方。
  • 安装安全插件:可以考虑安装一些专业的网站安全防护插件,它们可以拦截恶意请求、扫描Webshell等。

如何判断网站是否被攻击?

  1. 查看服务器日志:这是最直接的方法,登录你的服务器,查看网站访问日志(通常在 /var/log/apache2//var/log/nginx/ 目录下,文件名如 access.log),搜索包含 php 的请求,看Refererurl参数是否可疑。
  2. 文件时间检查:在FTP工具中,按“最后修改时间”排序,查看近期是否有不寻常的文件被创建或修改。
  3. 网站行为异常:发现网站打开速度变慢、页面被篡改、浏览器弹出安全警告、被百度/谷歌标为“危险网站”等。
  4. 使用安全扫描工具:使用D盾、安全狗等工具对网站进行全面的扫描,可以发现可疑的Webshell文件和后门。

DEDECMS 404漏洞是一个深刻的教训,它提醒我们:网站的任何一个细节,尤其是错误处理和用户输入,都可能成为黑客的突破口。 安全意识和技术防范必须时刻保持。

-- 展开阅读全文 --
头像
dede自定义字段不显示,原因何在?
« 上一篇 2025-12-20
织梦默认站点无法访问怎么办?
下一篇 » 2025-12-20

相关文章

取消
微信二维码
支付宝二维码

目录[+]