DedeCMS plus/digg.php 顶踩注入(SQL注入)修复教程

第9篇:DedeCMS plus/digg.php 顶踩注入(SQL注入)修复教程

一、漏洞说明

该漏洞属于前台SQL注入中危漏洞,存在于DedeCMS顶踩功能模块,攻击者无需登录,可通过构造恶意顶踩请求,触发SQL注入,获取网站数据库信息、篡改顶踩数据,影响网站数据真实性,漏洞核心为id参数未进行intval强转导致注入风险。

  • 漏洞类型:SQL注入
  • 危害等级:中危
  • 影响版本:DedeCMS 全版本(含V5.7 SP2 ~ 5.7.118及衍生版本)
  • 漏洞文件:/plus/digg.php
  • 漏洞场景:前台顶踩功能中,程序未对id参数进行intval强转,直接代入SQL查询语句,导致攻击者可构造恶意参数触发SQL注入漏洞。

二、代码分析

漏洞核心原因:digg.php 文件中,对前台传入的id参数(用于指定顶踩的文章/内容ID)未进行intval强转,仅简单获取后直接代入SQL查询语句,攻击者可构造恶意参数,篡改查询逻辑,实现SQL注入,获取敏感数据或篡改顶踩记录。

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

<?php
// 原漏洞代码(顶踩逻辑,id未进行intval强转)
$id = $_GET['id'];
$action = $_GET['action'];
// 直接将未强转的id代入SQL查询,存在注入风险
if($action == 'digg'){
    $sql = "UPDATE `#@__digg` SET digg=digg+1 WHERE id='$id'";
}else{
    $sql = "UPDATE `#@__digg` SET bury=bury+1 WHERE id='$id'";
}
$dsql->ExecuteNoneQuery($sql);
?>

代码问题分析:

  1. 参数未强转:id参数直接从GET请求中获取,未进行intval强转,可传入字符串类型的恶意参数,直接篡改SQL查询逻辑;
  2. 参数未过滤:未对id参数进行任何过滤、转义处理,允许传入包含SQL语句的恶意参数,触发注入漏洞;
  3. 无参数校验:未校验id参数的合法性(如是否为正数、是否存在对应顶踩记录),攻击者可随意构造参数,触发注入漏洞。

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

http://你的网站域名/plus/digg.php?id=1′ UNION SELECT 1,admin,pwd FROM #@__admin–&action=digg

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

本修复方案无需升级DedeCMS版本,仅修改digg.php文件,核心是对id参数进行intval强转,彻底封堵SQL注入漏洞,不影响顶踩功能正常使用,步骤如下:

步骤1:备份漏洞文件

备份 /plus/digg.php 文件,备份路径示例:/plus/digg.php.bak,避免修改错误导致顶踩功能异常,便于后续回滚操作。

步骤2:核心修复(intval强转id参数)

打开 /plus/digg.php 文件,找到上述漏洞代码片段,替换为以下修复后的代码,核心是对id参数进行intval强转,杜绝注入风险:

<?php
// 修复1:对id参数进行intval强转,确保为整数,彻底杜绝SQL注入
$id = intval($_GET['id']);
$action = addslashes($_GET['action']); // 额外过滤action参数,防止连带漏洞
// 修复2:修改SQL查询语句,适配整数参数,消除注入风险
if($action == 'digg'){
    $sql = "UPDATE `#@__digg` SET digg=digg+1 WHERE id=".$id;
}else{
    $sql = "UPDATE `#@__digg` SET bury=bury+1 WHERE id=".$id;
}
$dsql->ExecuteNoneQuery($sql);
?>

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

  1. 添加参数合法性校验:在获取id、action参数后,添加判断逻辑,禁止空值、负数或非法参数,进一步拦截恶意请求,代码如下:

// 新增:参数合法性校验

if(empty($id) || $id <= 0 || !in_array($action, array(‘digg’, ‘bury’))){

exit(‘非法请求,禁止访问’);

}

  1. 限制顶踩频率:通过Cookie或Session记录用户顶踩IP和时间,禁止同一IP短时间内多次顶踩,防止刷票和暴力注入尝试;
  2. 过滤action参数:如上述修复代码所示,对action参数进行addslashes过滤,防止XSS或连带注入风险。

步骤4:验证修复效果

  1. 访问恶意利用链接:http://你的网站域名/plus/digg.php?id=1′ and 1=2–&action=digg,若提示「非法请求,禁止访问」或无顶踩操作生效,则修复生效;
  2. 构造其他恶意参数(如 id=1′ UNION SELECT 1,2,3–&action=bury),无SQL注入现象,且页面无异常报错,修复生效;
  3. 测试正常顶踩功能:点击合法内容的顶踩按钮,顶踩次数正常增加,说明功能未受影响。

四、注意事项

  • 修复后需测试顶踩功能的正常使用,确保顶踩次数可正常增加、无异常报错,避免影响用户体验;
  • 若网站顶踩功能有二次开发(如自定义顶踩规则、顶踩统计),需确认修改后的代码与二次开发内容无冲突,尤其是涉及id参数的逻辑;
  • 该漏洞为全版本通用漏洞,无论使用哪个版本的DedeCMS,均需进行修复,避免攻击者利用漏洞获取敏感数据;
  • 建议定期查看顶踩数据,若发现异常顶踩记录(如短时间内顶踩次数激增),及时排查是否有攻击者尝试利用漏洞。

本文由 流觞运维 整理,如需 DedeCMS 该漏洞代修复、全站点漏洞扫描、安全加固、挂马清理服务,可联系微信:lnmp_wuyi(备注:dede修复)

暂无评论

发送评论 编辑评论


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