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,均需进行修复,避免攻击者利用漏洞获取敏感数据;
  • 建议定期查看顶踩数据,若发现异常顶踩记录(如短时间内顶踩次数激增),及时排查是否有攻击者尝试利用漏洞。

本文由 流觞运维 整理https://www.lnmpweb.cn/archives/7493

相关推荐
vHelios12 小时前
SQL不会写?不会找关联表?复杂SQL语句编写逻辑实现思路请查收✉
数据库·sql
qq_448011161 天前
C语言中的动态内存分配
c语言·开发语言·php
麻瓜code1 天前
【Mysql】重新学一遍 SQL 执行顺序
数据库·sql
Hrain-AI1 天前
2026 编码智能体三强对比:Trae/Qoder CN/CodeBuddy 安全护栏
人工智能·安全
叠层归一研究院1 天前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
cjy_11 天前
2026人工智能产业发展深度剖析:落地化、垂直细分、安全合规成行业核心赛道
人工智能·安全
数据知道1 天前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
宏集科技-鲁工1 天前
挣脱线缆束缚:宏集EXOR X5 Wireless无线手持HMI如何让光伏工地AGV操控更安全高效
安全
江畔柳前堤1 天前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php
听你说321 天前
推进具身智能安全评测:丈八科技与季华实验室达成战略合作
人工智能·科技·安全