漏洞概要 关注数(85) 关注此漏洞
缺陷编号: WooYun-2013-46093
漏洞标题: phpcms v9 SQL注入漏洞(第二弹)
相关厂商: phpcms
漏洞作者: 狗狗侠
提交时间: 2013-12-16 11:01
公开时间: 2014-03-16 11:02
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2013-12-16: 细节已通知厂商并且等待厂商处理中
2013-12-17: 厂商已经确认,细节仅向厂商公开
2013-12-20: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-02-10: 细节向核心白帽子及相关领域专家公开
2014-02-20: 细节向普通白帽子公开
2014-03-02: 细节向实习白帽子公开
2014-03-16: 细节向公众公开
简要描述:
null
详细说明:
第二次玩乌云,等待乌云发BB
漏洞文件发生在phpcms\modules\member\index.php中392行
我们注册用户,然后修改个人信息
**.**.**.**/index.php?m=member&c=index&a=account_manage_info&t=1
我们更新测试下,将带有’ (单引号的名字)带入数据库试试
然后我们看看数据库中对应表的更新
然后发现已经成功进入了数据库
接下来我们要做的就是重新登录(必须重新注销登录,因为要用到这里重新登录的cookie)
当我们重新登录的时候
在phpcms\modules\member\index.php中543行
public function login() {
$this->_session_start();
//…..省略若干代码
param::set_cookie('auth', $phpcms_auth, $cookietime);
param::set_cookie('_userid', $userid, $cookietime);
param::set_cookie('_username', $username, $cookietime);
param::set_cookie('_groupid', $groupid, $cookietime);
param::set_cookie('_nickname', $nickname, $cookietime);
//…..省略若干代码
这里我们发现已经重新设置nickname的cookie了,而这里的$nickname也是从数据库里面取出来的。
我们看phpcms\modules\comment\index.php中的post方法
这里的$username变量是通过cookie过来的
然后这个$username变量又做了些什么呢?
在phpcms\modules\comment\index.php 100行处
发现这个它赋给了一个$data数组,然后进入了数据库,一个insert语句
$comment->add()这样一个过程
上面是一个提交评论的操作,我们的攻击思路是这样的
当我们提交评论的时候,截取我们的数据包,将其中的username这个cookie值用我们nickname这个cookie值来代替,这样就起到了注入的效果了,我们测试下
具体攻击过程就不演示了。。。
贴一下官网测试的结果
漏洞证明:
修复方案:
这个....在入数据库前做过滤吧,记得若干年前80vul的那句。。。一切变量都是有害的
版权声明:转载请注明来源 狗狗侠@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2013-12-17 13:34
厂商回复:
感谢提交
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
0%
0%
0%
0%