一、漏洞说明该漏洞属于前台SQL注入中危漏洞存在于DedeCMS留言板模块攻击者无需登录可通过构造恶意留言或留言查看请求触发SQL注入获取网站数据库信息、伪造留言内容甚至越权操作网站数据。漏洞编号公开漏洞无专属CVE/CNVD编号为全版本通用漏洞危害等级中危可升级为高危取决于攻击者利用深度影响版本DedeCMS 全版本含V5.7 SP2 ~ 5.7.118及衍生版本漏洞文件/plus/guestbook.php漏洞场景前台留言板查看、提交留言功能中程序未对id、mid等参数进行严格过滤直接代入SQL查询导致SQL注入漏洞。二、代码分析漏洞核心原因guestbook.php 文件中对前台提交的id参数用于查看单条留言未进行任何过滤和类型强转直接将其代入SQL查询语句攻击者可构造恶意参数篡改查询逻辑实现SQL注入。关键漏洞代码原文件片段?php // 原漏洞代码留言查看逻辑 $id $_GET[id]; $sql SELECT * FROM #__guestbook WHERE id$id; $row $dsql-GetOne($sql); // 留言展示逻辑... ?代码问题分析参数未过滤id参数直接从GET请求中获取未进行任何过滤、转义处理允许传入包含SQL语句的恶意参数类型未强转id参数应为整数类型留言ID程序未对其进行intval强转可传入字符串类型的恶意参数无参数校验未校验id参数的合法性如是否为正数、是否存在对应的留言攻击者可随意构造参数触发漏洞。漏洞利用示例仅用于学习请勿非法测试http://你的网站域名/plus/guestbook.php?id1′ UNION SELECT 1,2,3,admin,pwd FROM #__admin–上述请求可通过注入获取管理员账号和密码进一步登录后台控制网站。三、修复方法原位修复不升级、不影响模板本修复方案无需升级DedeCMS版本仅修改guestbook.php文件通过参数强转、合法性校验等方式封堵漏洞不影响留言板正常功能步骤如下步骤1备份漏洞文件备份 /plus/guestbook.php 文件备份路径示例/plus/guestbook.php.bak避免修改错误导致留言板功能异常便于后续回滚。步骤2核心修复参数强转过滤打开 /plus/guestbook.php 文件找到上述漏洞代码片段替换为以下修复后的代码?php // 修复1参数强转int确保id为整数杜绝SQL注入 $id intval($_GET[id]); // 修复2修改SQL查询语句适配整数参数 $sql SELECT * FROM #__guestbook WHERE id.$id; $row $dsql-GetOne($sql); // 留言展示逻辑...保留原有代码不做修改 ?步骤3额外加固可选提升安全性添加参数合法性校验在获取id参数后添加判断逻辑禁止空值、负数或非法参数代码如下// 新增参数合法性校验if(empty($id) || $id 0){exit(‘非法请求禁止访问’);}过滤留言提交参数检查留言提交功能中的content、name等参数添加htmlspecialchars()过滤防止XSS攻击连带加固$content htmlspecialchars($_POST[‘content’], ENT_QUOTES);$name htmlspecialchars($_POST[‘name’], ENT_QUOTES);限制留言提交频率通过添加Cookie或Session限制禁止同一IP短时间内多次提交留言防止暴力注入和垃圾留言。步骤4验证修复效果访问恶意利用链接http://你的网站域名/plus/guestbook.php?id1′ and 12–若提示「非法请求禁止访问」或无有效留言展示则修复生效构造其他恶意参数如 id1′ UNION SELECT 1,2,3,4–无SQL注入现象修复生效测试正常留言功能提交留言、查看留言均可正常操作说明功能未受影响。四、注意事项修复后需全面测试留言板的提交、查看、删除若有等功能确保无异常若网站留言板有二次开发如自定义留言审核、留言分类需确认修改后的代码与二次开发内容无冲突该漏洞为全版本通用漏洞无论使用哪个版本的DedeCMS均需进行修复建议定期清理留言板中的异常留言避免攻击者通过留言内容植入恶意代码。本文由 流觞运维 整理https://www.lnmpweb.cn/archives/7487