DEDECMS 5.7之前版本远程SQL注入漏洞

2012年4月29日凌晨,知道创宇安全团队发现DEDECMS存在SQL注入0day漏洞,影响5.7版本。官方尚未发布正式补丁,提供了三种临时解决方案:应用特定代码补丁、禁用会员功能或删除问题文件。

2012/4/29 凌晨 知道创宇安全研究团队截获到最新DEDECMS SQL注入 0day,官网目前提供下载的最新版5.7也受影响,截止本告警发出时官方尚未给出补丁或解决方案,此漏洞利用简单且dedecms安装之后默认即开启漏洞模块。

知道创宇给出三种临时解决方案:

方案一、临时补丁,需要四步

1. 确保您的magic_quotes_gpc = On

详细开启方式:打开php安装目录中的php.ini(若您使用的是appserv等集成环境,php.ini可能在系统盘符:\windows\php.ini),搜索magic_quotes_gpc,将其设置为On。

2.

/plus/carbuyaction.php 22行附近即

if($cfg_mb_open =='N'){ShowMsg("系统关闭了会员功能,因此你无法访问此页面!","javascript:;");exit();}

下面添加一行代码

$rs =array();

3.

在 member/ajax_membergroup.php 33行附近即

if(empty($membergroup)){
    echo "您还没有设置分组!";exit;}

下面加入如下代码:

if(strpos($membergroup,"'")){
    echo "SQL注入防护临时补丁,知道创宇安全团队提醒您关注官方补丁!";exit;}

4.

原member/ajax_membergroup.php 36 行附近的

$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");

修改为

$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id='{$membergroup}'");

方案二、以网站管理员身份后台禁用会员功能

系统 -> 系统基本参数 -> 会员设置 -> 是否开启会员功能 改为(否)

方案三、若贵站不需要会员功能,可考虑直接重命名或删除存在漏洞的文件 /member/ajax_membergroup.php,最暴力却最有效的方式。

本文给出的临时补丁仅供临时防御,对系统造成轻微影响尚未进行系统测试,目前我们已经通知织梦CMS官方,具体补丁等请等待官方补丁。

DedeCMS是一款流行的内容管理系统(CMS),但在过去的一些版本中存在SQL注入漏洞SQL注入是一种通过将恶意的SQL代码插入到应用程序的输入字段中,从而控制数据库执行非预期操作的攻击方式。以下是DedeCMS SQL注入漏洞复现的步骤: ### 步骤一:环境搭建 1. **下载DedeCMS**:从官方网站或其他可信来源下载DedeCMS的旧版本(存在漏洞版本)。 2. **安装DedeCMS**:按照官方文档的步骤进行安装,确保数据库和Web服务器(如Apache或Nginx)正常运行。 ### 步骤二:识别漏洞 1. **查找注入点**:常见的注入点包括搜索功能、登录功能等。假设我们使用搜索功能作为注入点。 2. **构造恶意输入**:在搜索框中输入带有SQL注入的恶意输入。例如,`' OR '1'='1`。 ### 步骤三:执行SQL注入 1. **测试注入**:在搜索框中输入测试语句,观察页面响应。如果页面返回了异常的结果或错误信息,说明存在SQL注入漏洞。 2. **提取数据**:使用SQL注入技术提取数据库中的数据。例如,使用`UNION SELECT`语句结合`information_schema.tables`表来获取表名。 ### 步骤四:利用漏洞 1. **获取数据库信息**:通过SQL注入获取数据库版本、用户信息、数据库名等信息。 2. **获取表和列信息**:利用`information_schema`数据库获取表名和列名。 3. **提取数据**:根据获取的表名和列名,提取具体的数据。 ### 步骤五:修复漏洞 1. **更新DedeCMS**:升级到最新版本,修复已知的SQL注入漏洞。 2. **代码审计**:对代码进行审计,修复所有可能的注入点。 3. **使用参数化查询**:确保所有数据库查询都使用参数化查询,防止SQL注入。 ### 示例代码 以下是一个简单的示例,展示如何通过SQL注入获取数据库版本信息: ```sql SELECT * FROM users WHERE username = '' OR '1'='1' AND password = ''; ``` 通过这种方式,攻击者可以绕过身份验证,获取所有用户的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值