当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-060773

漏洞标题:PHPMyWind 注入漏洞&任意用户登录

相关厂商:phpmywind.com

漏洞作者: Matt

提交时间:2014-05-15 12:24

修复时间:2014-08-10 12:26

公开时间:2014-08-10 12:26

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-15: 细节已通知厂商并且等待厂商处理中
2014-05-20: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-07-14: 细节向核心白帽子及相关领域专家公开
2014-07-24: 细节向普通白帽子公开
2014-08-03: 细节向实习白帽子公开
2014-08-10: 细节向公众公开

简要描述:

PHPMyWind 注入漏洞&任意用户登录

详细说明:

member.php
if(!empty($_COOKIE['username']) &&//从COOKIE里面解密username然后赋值
!empty($_COOKIE['lastlogintime']) &&
!empty($_COOKIE['lastloginip']))
{
$c_uname = AuthCode($_COOKIE['username']);
$c_logintime = AuthCode($_COOKIE['lastlogintime']);
$c_loginip = AuthCode($_COOKIE['lastloginip']);
}
else
{
$c_uname = '';
$c_logintime = '';
$c_loginip = '';
}
//验证是否登录和用户合法
if($a=='saveedit' or $a=='getarea' or $a=='savefavorite' or
$a=='delfavorite' or $a=='delcomment' or $a=='delmsg' or
$a=='delorder' or $a=='avatar' or $a=='getgoods' or
$a=='applyreturn' or $a=='perfect' or $a=='binding' or
$a=='removeoqq' or $a=='removeoweibo')
{
if(!empty($c_uname))
{
//guest为一键登陆未绑定账号时的临时用户
if($c_uname != 'guest')
{
$r = $dosql->GetOne("SELECT `id`,`expval` FROM `#@__member` WHERE `username`='$c_uname'");//通过上面的可以看出来源

shoppingcart.php
if($a == 'addshopingcart')
{
//构成选中属性
if(isset($typeid))
{
//参数过滤
$typeid = intval($typeid);
//获取商品属性
$dosql->Execute("SELECT * FROM `#@__goodsattr` WHERE `goodsid`=$typeid");
if($dosql->GetTotalRow() > 0)
{echo 55555;
//构成属性字符串
$goodsattr = array();
while($row = $dosql->GetArray())
{
//选中的属性构成字符串
if(isset($_POST['attrid_'.$row['id']]))
{
$goodsattr[$row['id']] = $_POST['attrid_'.$row['id']];//这里的参数可以控制
}
}
var_dump($goodsattr);
}
else
{
$goodsattr[$row['id']] = '';
}
}
//初始化购物车字符串
if(!empty($_COOKIE['shoppingcart']))
$shoppingcart = unserialize(AuthCode($_COOKIE['shoppingcart']));
else
$shoppingcart = array();
//选中信息存入数组
if(isset($goodsid) &&
isset($buynum) &&
isset($goodsattr))
{
//过滤参数
$goodsid = intval($goodsid);
$buynum = intval($buynum);

$shoppingcart[] = array($goodsid, $buynum, $goodsattr);
}
var_dump($shoppingcart);
//存入COOKIE
setcookie('shoppingcart', AuthCode(serialize($shoppingcart),'ENCODE'));//吧购物车的内容加密之后存入cookie 这样我们就能先利用$_POST['attrid_'.$row['id']]来写入我们的注入shellcode,然后将将得到的shoppingcart的COOKIE改成username就可以达到利用了
echo TRUE;
exit();

漏洞证明:

测试方法

打开http://127.0.0.1/mywind/shoppingcart.php?typeid=10&a=addshopingcart&goodsid=1&buynum=1
POST提交attrid_1=sssss2'
PS:测试的时候请安装体验数据~需要有一个商品ID即可~
然后把cookie里面的shoppingcart复制三份
分别改成empty($_COOKIE['username']) &
!empty($_COOKIE['lastlogintime'])
!empty($_COOKIE['lastloginip']))这三个
然后打开http://127.0.0.1/mywind/member.php?c=default 即可
因为很多地方用到了authdecode cookie 这样我们得到一个加密的值之后 就可以登录任意用户 甚至是后台也是这样验证的

cookie.png

cookie2.png

inj_error.png

修复方案:

你猜~

版权声明:转载请注明来源 Matt@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-08-10 12:26

厂商回复:

最新状态:

暂无