针对Vue前后端分离项目的渗透思路

news2024/11/25 4:34:52

引言

在目前的开发环境下,越来越多的厂商选择 Vue.js 来实现前端功能的编写,且成熟的前端框架已经可以实现后端代码实现的功能,导致后端目前只负责提供 Api 接口和文档,方便前端的同时去调用。本文主要介绍如何针对这类前后端分离的网站去进行渗透测试,以及如何高效进行渗透测试成为了重点关注的问题。

思路

一般的前后端分离网站的架构基本是 Nginx + Vue.js + Java(Tomcat/SpringBoot) 且编写后的 Vue 代码通过 WebPack 打包发布,浏览器引擎通过动态解析并渲染页面就可以形成最终形成大家可以看到的系统界面,且 js 和 css 都是打包压缩后的,很难供我们正常阅读。

WebPack 打包的 js 文件命名规则为:模块名称+ 模块内容Hash值

例如:app.1b9d4d540cea3c00d632V2.0.2_1610699496426.js

通常的渗透思路一般是以下几点:

  1. 查找未授权 Api 接口获取敏感信息进一步利用,如获取系统用户账号密码等信息。

  2. 查找未授权 Api 接口来去分析功能,如去查找文件上传,更改头像等功能。

  3. 查找未授权 Api 接口去尝试进行常规测试,例如 SQL 注入,XSS,SSRF,命令执行,XXE,Fastjson,Shiro 等。

打包后的 js 文件。

主动 API 接口获取

1、通过 Chrome 浏览器插件 findsomething 迅速提取出 Api 接口。

2、通过 URLfiner 获取 go run main.go -a "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" -u http://www.xxxxxx.cn -o . -m 2 -t 20

参数解释

  • -a 指定 ua 头

  • -u 指定 URL

  • -o 指定输出

  • -m 爬取深度

  • -t 爬取线程

被动 API 接口获取

Q:为什么要被动获取 Api 接口?

A:  webpack 关心性能和加载时间;
例如:异步地加载 chunk 和预取。在打包过程中,模块会被合并成 chunk. chunk 合并成 chunk 组,并形成一个通过模块互相连接的图。
chunk 有两种形式:
initial(初始化) 是入口起点的 main chunk。此 chunk 包含为入口起点指定的所有模块及其依赖项。non-initial 是可以延迟加载的块

具体解释为:
有些前端应用不同的菜单会对应不同的 chunk.js 
例如某系统默认用户只显示某几个菜单,加载了两个 chunk.js
但是当访问到除此之外的其它菜单后,又加载了新的 chunk.js 

对比如下:
访问https://a.testivy.cn/#/job 加载的 js 如下:
app.261acb1e.chunk.js 
main.24f96504.chunk.js 
但是当访问 https://a.testivy.cn/#/widget 加载的 js 如下:
app.261acb1e.chunk.js
main.24f96504.chunk.js
app.281d33fb.chunk.js

发现多了一个 app.281d33fb.chunk.js 如果说这时候去用主动收集可能就会收集不到这个未被加载的 js,所以这就是为什么要去被动获取。

HaE burpsuite 插件: 开启这个插件后,我们只需要在网站上点点点就可以,例如找回密码按钮,登录按钮,注册按钮等,点击这些按钮可能就会加载一些未被加载的 chunk.js 文件,然后去 burpsuite 里面去查看 HaE 匹配到的一些接口泄露

过滤主机。

查看 JS 文件泄漏的 API 接口。

接着把主动和被动收集到的 API 接口整理成一个 txt 文件并存进去,再去利用httpx 去进行一个 title,Server 等一些 Web 信息探测,从而来判断 API 接口是否做了鉴权。

./httpx -l url.txt -sc -title -cl -location

参数解释

  • -l 指定文件

  • -sc 显示 status code 状态码

  • -title 显示标题

  • -cl 显示 body 长度

  • -location 如果返回 301 跳转,则显示 301 跳转的地址

万花丛中一点绿。

API 接口未做鉴权,产生信息泄露。

其他接口打开都为 401。

通过这个接口查询到所泄露的 js 文件地址。

提取出关键代码Oe.get("".concat(Se(),"/api/xxx/xxx/xxx/v1/user/all"),e,"json")可以发现是 get 请求,如果发现的 Api 接口类似为:/api/xxx/xxx/xxx/v1/file/upload,这种情况一般都为 post 请求,所以我们可以去通过查看 js 文件,来找出请求的 body 内容参数,从而构造上传包来达到文件上传。

Tips

1. 在常规场景下,前端的项目一般搭建在公网上,而 API 接口也就是后端服务器是部署在内网,但是很多情况下,开发者为了方便管理和调试,会在公网 Api 后端服务器上搭建一个后台管理界面从而方便管理数据,这种情况下就会存在一定的几率导致泄露出后端服务器的 IP,所以我们不仅可以在 js 文件中发现 API 接口,还可以去尝试去获取 IP 和域名。

2. 服务器开放了多个端口,前端服务搭建在 80 端口上,后端 API 服务搭建在 8080 端口上,这种情况下我们拿前面搜集到的 API 接口去 80 端口上跑鉴权和信息泄露是跑不到的,所以我们可以查看其他端口上有没有跑一些 Web 服务,例如 Tomcat,Springboot 等,针对这些端口可以去尝试跑 API 接口路径,可能会有意想不到的收获。

本篇文章用到的工具

HaE:https://github.com/gh0stkey/HaE
URLFinder:https://github.com/pingc0y/URLFinder
FindSomething: https://chrome.google.com/webstore/detail/findsomething/kfhniponecokdefffkpagipffdefeldb
Httpx:https://github.com/projectdiscovery/httpx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/478492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何利用几何坐标变换后纠正技术实现倾斜摄影三维模型数据拼接?

如何利用几何坐标变换后纠正技术实现倾斜摄影三维模型数据拼接? 倾斜摄影三维模型数据拼接是指将多个倾斜摄影数据集合并为一个完整的三维模型。在这个过程中,由于不同数据集之间的相对位置和姿态不同,需要进行几何坐标变换以实现数据拼接。…

借用AI工具为视频添加中文字幕,消除语言障碍,母语环境最快速地学习

由于chatgpt的启动,感觉语言已经完全不会成为学习的障碍,突发奇想,在我们查看youtube视频的时候,有没有方便的工具能够将其字幕翻译为中文。这样能够极大提高在youtube学习的效率,于是顺手问了一下ChatGPT,…

Nginx—在linux的ubuntu系统上的安装使用

前言: 有关Nginx的基础知识和使用都在这里Nginx简介和快速入门_北岭山脚鼠鼠的博客-CSDN博客 常用命令: cd /usr/local/nginx/sbin/ ./nginx 启动 ./nginx -s stop 停止 ./nginx -s quit 安全退出 ./nginx -s reload 重新加载配置文件(常用) //在修改配置文件之后使用 p…

教你部署chatgpt商业版源码,支持卡密开通国内使用

教你部署chatgpt商业版源码,支持卡密开通国内使用 当今,人工智能技术在各个领域的应用越来越广泛,其中自然语言处理是非常重要的一环。OpenAI 的 GPT 模型是自然语言处理领域的一项重要技术,它可以根据已有的文本数据,…

Java 怎样实现代理模式,有什么优缺点

一、介绍 代理模式是一种常见的设计模式,它可以为其他对象提供一种代理以控制对这个对象的访问。代理对象具有与被代理对象相同的接口,客户端无需知道代理对象和被代理对象的区别。代理模式可以应用于各种不同的场景,例如远程代理、虚拟代理…

Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus

文章目录 一、Docker命令监控二、Sysdig2.1介绍2.2 基本操作2.2.1 切换视图2.2.2 查看标签含义2.2.3 排序2.2.4 查看内部进程2.2.5 查找2.2.6 暂停2.2.7 上一级2.2.8 退出 三、Weave Scope3.1介绍3.2基本操作3.2.1 显示容器3.2.2 选择容器3.2.3 按照CPU使用情况排序3.2.4 控制容…

手动开发 简单的 Spring 基于 XML 配置的程序

目录 手动开发- 简单的 Spring 基于 XML 配置的程序 需求说明 思路分析 WyxApplicationContextTest xml配置 注意 手动开发- 简单的 Spring 基于 XML 配置的程序 需求说明 1. 自己写一个简单的 Spring 容器, 通过读取 beans.xml,获取第 1 个 JavaBean: Mon…

【建议收藏】Pandas(一)——初见Series

文章目录 📚引言📖库的安装以及一些说明📑库的安装📑一些说明 📖Series📑创建一个Series🔖从列表创建Series🔖从字典创建Series🔖标量创建Series 📑Series的特…

SpringSecurity认证原理和自定义认证

认证原理和自定义认证 认证配置表单认证注销登录前后端分离认证添加验证码 自定义认证 自定义资源权限规则 /index 公共资源/hello … 受保护资源 权限管理 在项目中添加如下配置就可以实现对资源权限规则设定: Configuration public class WebSecurityConfigurer extend…

node笔记_http服务搭建(渲染html、json)

文章目录 ⭐前言⭐初始化项目调整npm 的script运行入口搭建hello world的http服务npm run dev执行主函数的http服务 ⭐http返回类型html模板文件返回安装express渲染html的字符串 渲染html文件 sendFile渲染json返回数据类型 res.json ⭐结束 ⭐前言 大家好,我是ym…

CTF权威指南 笔记 -第二章二进制文件- 2.2 -ELF文件格式

目录 ELF的文件类型 ELF文件的结构 ELF文件头 节头表 代码节 数据节和只读数据节 bss节 字符串表 符号表 重定位 可执行文件的装载 常见的段 ELF就是可执行可连接格式 为linux运行文件格式 ELF的文件类型 我们使用复杂的例子进行演示 #include<stdio.h>int gl…

成功解决长时间挂起虚拟机后再次打开无法连接网络,并提示网络激活失败(亲测有效)

成功解决长时间挂起虚拟机后再次打开无法连接网络&#xff0c;并提示网络激活失败&#xff08;亲测有效&#xff01;&#xff09; 之前做区块链的一个虚拟机很久没打开&#xff0c;一直处于挂起状态&#xff0c;一直提示网络连接激活失败。试了很多种方法没解决&#xff0c;更…

人力资源管理系统有哪些推荐?

人力资源管理系统是现代企业管理中必不可少的工具&#xff0c;它可以帮助企业高效地管理人员的入职、离职、考勤、绩效、薪酬等方面的信息。 然而&#xff0c;市场上的HRM系统琳琅满目&#xff0c;选择一款合适的系统并不容易。 今天就来给大家介绍六款好用的人力资源管理系统…

自动化运维工具---Ansible Playbook语法实战(一)

目录 一、Ansible Playbook剧本初识 1.1 Ansible Playbook 基本概述 1.1.1 什么是playbook 1.1.2 Ansible playbook 与AD-Hoc的关系 1.2 Ansible Playbook 书写格式 1.2.1安装NFS 服务 1.3 Playbook变量详解 1.3.1 使用 vars定义变量 1.3.2 使用 vars_flies定义变量 …

中国平安将在2023年出现转机,复苏才刚刚开始

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 在解封后股价出现短暂反弹之后&#xff0c;由于市场担忧中国平安&#xff08;02318&#xff09;人寿保险部门新业务NBV&#xff08;用于衡量寿险公司新业务价值的一个重要指标,当一家保险公司的NBV指标越高,那么说明每新增…

码出高效:Java开发手册笔记(线程安全)

并发与并行的目标都是尽可能快地执行完所有任务。以医生坐诊为例&#xff0c;某个科室有两个专家同时出诊&#xff0c;这就是两个并行任务&#xff0c;其中一个医生&#xff0c;时而问诊&#xff0c;时而查看化验单&#xff0c;然后继续问诊&#xff0c;突然又中断去处理病人的…

总线、I/O总线、I/O接口

总线是计算机内数据传输的公共路径&#xff0c;用于实现两个或以上部件之间的信息交换。计算机系统中有多种总线&#xff0c;它们在各个层次上提供部件之间的连接和信息交换通路。 核内总线&#xff1a;在处理器核内部各元件之间连线的总线称为核内总线&#xff0c;可连接核内…

Java-数据结构-并查集<二>

一.并查集的简单介绍 二. 并查集的主要构成和实现方式 三.HashMap模板和数组模板 由于在下文的模板基本一致&#xff0c;不再每次都罗列&#xff0c;大体的模板如下&#xff0c;若有错误可以在leetcode找到对应的题目解答&#xff0c;已经附上连接。 HashMap class UnionFi…

本周大新闻|苹果首款MR没有主打卖点;Meta认为AI是AR OS的基础

​本周XR大新闻&#xff0c;AR方面&#xff0c;苹果首款MR或没有主打卖点&#xff0c;反而尽可能支持更多App和服务&#xff1b;扎克伯格表示基于AI的AR眼镜操作系统是下一代计算平台的基础&#xff1b;微软芯片工程VP Jean Boufarhat加入Meta芯片团队&#xff1b;Humane展示了…

[计算机图形学]高级光线传播与复杂外观建模(前瞻预习/复习回顾)

本篇不涉及技术细节* 一、高级光线传播* 1.有偏和无偏估计 无偏估计&#xff0c;比如我们在之前做路径追踪的时候&#xff0c;我们用许多样本去近似定积分的值&#xff0c;无论我们取的样本数量是多少&#xff0c;它的期望永远是对的&#xff0c;也就是我们真实的定积分的值&…