漏洞概要 关注数(57) 关注此漏洞
缺陷编号: WooYun-2015-142234
漏洞标题: DESTOON某处注入可以直接提升为管理员
相关厂商: DESTOON
漏洞作者: Noxxx
提交时间: 2015-09-21 10:32
公开时间: 2015-12-20 10:52
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2015-09-21: 细节已通知厂商并且等待厂商处理中
2015-09-21: 厂商已经确认,细节仅向厂商公开
2015-09-24: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-11-15: 细节向核心白帽子及相关领域专家公开
2015-11-25: 细节向普通白帽子公开
2015-12-05: 细节向实习白帽子公开
2015-12-20: 细节向公众公开
简要描述:
DESTOON sql注入漏洞
详细说明:
首先看一个函数 :dhtmlspecialchars
好像也没什么问题,仔细一看这行:
$string = htmlspecialchars($string, ENT_QUOTES, DT_CHARSET == 'GBK' ? 'GB2312' : 'UTF-8');
这行功能是 把双引号和单引号转换为实体化.在继续往下看,
$_string = str_replace(array('"', '"', '"'), array('', '', ''), $string);
这一行居然又把实体化的双引号给替换成空了,这样会造成一个后果,会导致转义字符实效。
我们来从头到尾来过一遍。
首先初始化变量,对变量进行转义
if(!$MQG) {
if($_POST) $_POST = daddslashes($_POST);
if($_GET) $_GET = daddslashes($_GET);
if($_COOKIE) $_COOKIE = daddslashes($_COOKIE);
}
此时我们提交 ?g=" 那么对应的变量应该是 g=\"
我们在调用htmlspecialchars进行转义:
g="\
调用str_replace后变成 g=\
看这样可以直接进行注入了。
这个函数应用的地方非常多几乎每个功能模块都有再用,找了一个修改资料的地方可以直接提升为自己成为管理员。
漏洞证明:
首先注册一个企业会员,成功后。先修改一次资料 分别把个人资料里面阿里旺旺和公司联系方式里面的公司传真修改为一串数字 后面会用到
保存修改后,我们再来一次修改资料,先修改公司资料填入以下内容:
更新成功后 销售产品会变成 ',buy=
我们再来第二次更新修改,这次修改个人资料:
成功后手机号码会变成 ',department=
此时已经成功提升为管理员,
(注入管理员的话很简单,因为在同表内。)
最新版测试通过。
修复方案:
有点蛋疼,转义。
版权声明:转载请注明来源 Noxxx@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2015-09-21 10:51
厂商回复:
感谢反馈 我们会尽快修复
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值