原文作者:lazy小远
原文地址:https://xz.aliyun.com/t/10978
文末送书福利
前言
遇到一个站,后端是Node.js写的,对于这种类型的站点,一般比较难getshell,但也实现了最终的目标,拿到后台权限
信息搜集
先进行常规的信息搜集,子域名扫描、端口扫描、目录扫描等
这个站后端脚本语言是Node.js
目录探测发现404界面也极像Node.js的404页面,后面重点关注js文件
突破接口
在进行目录扫描的时候,发现了一个有用的目录:
前面说了,重点关注js文件,查看页面源代码,发现一个有趣的js文件,为什么说这个文件有趣呢?因为这个js的文件名和产品名一致
进去之后发现了新世界
这个网站的前端界面都是通过在js文件里document.write函数构造
页面动态渲染的数据是通过js函数中ajax请求获取
$.ajax({
url: host + "/agent/getPlayerInfo",
type: "post",
dataType: 'json',
headers: {"content-type" : "application/json"},
data: JSON.stringify({"uid" : uid})
}).done(function(data){
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即可
成功进入管理员后台
好书推荐
本书由资深大数据专家精心编写,循序渐进地介绍了Flink生态系统主流的大数据开发技术。全书共7章,第1章讲解Flink的基础知识,包括Flink应用场景、主要组件、编程模型等,最后通过一个单词计数示例带领读者快速体验Flink应用程序的编写;第2、3章讲解Flink的多种运行时架构、任务调度原理、数据分区以及Flink集群的安装部署,同时包括Flink命令行操作、应用程序提交、常用Shell命令等;第4~7章讲解了Flink流式计算DataStream API、关系型计算Table&SQL API以及图计算框架Gelly等的基础知识、架构原理,同时包括常用Shell命令、API操作、内核源码剖析,并通过多个实际案例讲解各个框架的具体应用以及与Hadoop生态系统框架Hive、Kafka的整合操作。
禁止非法,后果自负
欢迎关注公众号:web安全工具库
欢迎关注视频号:之乎者也吧
加我微信(ivu123ivu),发送本篇文章的‘点赞’‘在看’及分享朋友圈的截图,
获取抽奖送书福利,仅当天有效。.
原文始发于微信公众号(web安全工具库):Node.js站点渗透过(文末送书福利)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论