DedeCMS Search.php 代码执行漏洞(CVE-2020-18917)修复教程

一、漏洞说明

该漏洞为 DedeCMS 前台代码执行漏洞,攻击者可通过构造特殊的搜索参数,触发代码执行,直接获取网站服务器控制权,属于「高危」漏洞,无需登录即可利用,影响范围极广。

  • 漏洞编号:CVE-2020-18917
  • 危害等级:高危
  • 影响版本:DedeCMS V5.7 SP2 全版本
  • 漏洞文件:/plus/search.php
  • 漏洞场景:前台搜索功能,未对搜索参数进行严格过滤,导致攻击者可注入恶意代码,触发PHP代码执行。

二、代码分析

漏洞核心原因:search.php 文件中,对「搜索类型」参数(channelid)未进行过滤,直接将参数代入eval()函数执行,而eval()函数可执行任意PHP代码,攻击者通过构造恶意channelid参数,即可执行恶意代码。

关键漏洞代码(原文件片段):

<?php
// 原漏洞代码
$channelid = $_GET['channelid'];
// 未对channelid参数进行任何过滤,直接代入eval执行
eval("$rs = $dsql->GetOne("SELECT * FROM `#@__channeltype` WHERE id='$channelid'");");
if(!$rs){
    echo '无效的频道ID';
    exit;
}
?>

代码问题分析:

  1. 参数未过滤:channelid参数直接从GET请求中获取,未进行任何过滤、转义或强转,可被攻击者注入恶意代码;
  2. 危险函数使用不当:eval()函数是PHP中最危险的函数之一,可直接执行任意PHP代码,此处直接将用户可控参数代入,导致代码执行漏洞;
  3. 无参数校验:未校验channelid参数是否为合法的数字(频道ID应为整数),允许传入字符串类型的恶意参数。

漏洞利用示例(仅用于学习,请勿非法测试):

http://你的网站域名/plus/search.php?channelid=1′;phpinfo();//

上述请求会触发eval()函数执行phpinfo(),若漏洞存在,会显示服务器PHP信息;攻击者可替换为木马代码,获取服务器控制权。

三、修复方法(原位修复,不升级、不影响模板)

本修复方案通过禁用危险函数、过滤参数、修改代码逻辑,彻底封堵漏洞,不影响前台搜索功能,步骤如下:

步骤1:备份漏洞文件

备份 /plus/search.php 文件,避免修改错误导致搜索功能异常。

步骤2:修改漏洞代码(核心修复)

打开 /plus/search.php 文件,找到上述漏洞代码片段,替换为以下修复后的代码,核心是「移除eval()函数,对参数进行严格过滤」:

<?php
// 修复1:参数过滤,强转int,确保channelid为合法数字
$channelid = intval($_GET['channelid']);
// 修复2:移除eval()危险函数,直接执行SQL查询(参数已强转,无注入风险)
$rs = $dsql->GetOne("SELECT * FROM `#@__channeltype` WHERE id='$channelid'");
if(!$rs){
    echo '无效的频道ID';
    exit;
}
?>

步骤3:额外加固(可选,提升安全性)

  1. 禁用危险函数:在PHP配置文件(php.ini)中,添加 disable_functions = eval,exec,system ,禁止危险函数执行(需谨慎,避免影响网站其他功能);
  2. 过滤所有搜索参数:对search.php中的其他参数(如keyword、typeid等)进行过滤,添加 addslashes() 或 htmlspecialchars() 函数,防止XSS、SQL注入;
  3. 限制搜索请求频率:通过Apache/Nginx配置,限制单个IP的搜索请求频率,防止攻击者暴力测试。

步骤4:验证修复效果

  1. 访问漏洞利用示例链接,若提示「无效的频道ID」,则修复生效;
  2. 尝试构造其他恶意channelid参数(如 1′;phpinfo();//),无代码执行现象,修复生效;
  3. 测试正常搜索功能,输入关键词搜索,可正常显示结果,说明功能未受影响。

四、注意事项

  • 修复后务必测试前台搜索功能,确保不影响正常使用;
  • 若网站有二次开发,需确认修改后的代码与二次开发内容无冲突(尤其是涉及频道ID的逻辑);
  • 该漏洞仅影响DedeCMS V5.7 SP2版本,若已升级到更高版本,可检查该文件是否存在相同问题,如有需同步修复。

本文由 流觞运维 整理,如需 DedeCMS 该漏洞代修复、全站点漏洞扫描、安全加固、挂马清理服务,可联系微信:lnmp_wuyi(备注:dede修复),支持全版本原位修复,不升级、不崩模板。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇