安全矩阵

 找回密码
 立即注册
搜索
查看: 932|回复: 0

一次对Node.js站点渗透

[复制链接]

77

主题

77

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
发表于 2022-9-4 15:07:55 | 显示全部楼层 |阅读模式

简介最近一个月也是刚刚入职,一直在搞公司的项目,所以比较忙,公众号也一直没有更新,今天看到了一篇还不错的文章,所以转一下,因为现在业务迭代快,所以用现成js框架的站点也是越来越多了,所以学习学习思路还是ok的。
正文遇到一个站,后端是Node.js写的,对于这种类型的站点,一般比较难getshell,但也实现了最终的目标,拿到后台权限
信息搜集
先进行常规的信息搜集,子域名扫描、端口扫描、目录扫描等

编辑
这个站后端脚本语言是Node.js目录探测发现404界面也极像Node.js的404页面,后面重点关注js文件突破接口
在进行目录扫描的时候,发现了一个有用的目录前面说了,重点关注js文件,查看页面源代码,发现一个有趣的js文件,为什么说这个文件有趣呢?因为这个js的文件名和产品名一致
编辑
进去之后发现了新世界这个网站的前端界面都是通过在js文件里document.write函数构造页面动态渲染的数据是通过js函数中ajax请求获取

  1. $ . ajax ({
  2.     url : host + "/agent/getPlayerInfo" ,
  3.     type : "post" ,
  4.     dataType : 'json' ,
  5.     headers : { "content-type" : "application/json" },
  6.     data : JSON . stringify ({ "uid" : uid })
  7.   }). done ( function ( data ){
  8.     console . log ( data );
复制代码

核心的所有功能接口都是未授权访问的,根据不同的js文件里的ajax请求,使用postman直接构造数据包,即可实现后台相对应的功能

编辑
登陆后台
通过上述接口,可以通过用户的uid获取用户的用户名,将所有的用户名作为字典,放入burp爆破弱口令分析后台登陆包,密码被加密了

编辑
在js中找到加密方式,截取的是16位的md5根据js代码里的if逻辑可以很清楚的看到:返回包code值为101100是密码错误,200就是登陆成功,成功爆破出多个用户存在弱口令
密码错误:密码正确:
编辑

进入管理员后台
利用爆破的用户登陆后台,发现不是管理员权限但是继续阅读js代码,发现存在如下的代码:登陆成功后data.code == 200,再根据返回包的agentClass值,可以控制显示的是管理员界面还是客服界面还是一级、二级用户界面。由于是前端判断且通过document.write函数渲染界面,因此可以前端绕过,直接修改返回包中的agentClass值为管理员的值,就可以进入到管理员界面,且后端所有接口也都如上面一样不存在鉴权,因此管理员的后台所有功能都可以使用
agentClass=1时:
agentClass=2-4时:
那么只要修改返回包的agentClass=1即可

编辑
成功进入管理员后台
工具分享除了思路之外,还有一些工具可以帮助我们更多的收集到js文件及其接口信息。
递归式寻找域名和api
https://github.com/p1g3/JSINFO-SCAN
查找敏感数据(apikeys、accesstoken、jwt、..)在JS文件中
https://github.com/m4ll0k/SecretFinder




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-19 22:30 , Processed in 0.012820 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表