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

引言

在目前的开发环境下,越来越多的厂商选择 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java版鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统源代码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

java紫砂壶交易购物系统 mysql

网络紫砂壶可充通过色彩、图片、说明、设置动画加强了产品了宣传,大大达到了陶瓷业的“色型”要求。实现产品管理方便,起到立竿见影的效果,不用因为更改菜色而重新印刷。只要在后台鼠标轻轻一点,全线马上更新。采用B/S模式&#x…

mybatisPlus初识

文章目录 什么是mybatisplus依赖入门案例自动填充乐观锁悲观锁乐观锁 mybatisPlus实现乐观锁批量查询根据指定条件查询 什么是mybatisplus mybatisplus是mybatis的增强工具&#xff0c;支持多种类型的数据库。 依赖 <dependency><groupId>com.baomidou</group…

快速了解车联网V2X通信

自动驾驶拥有极其巨大的潜力&#xff0c;有可能改变我们的出行方式。它不仅有望永远改变车辆的设计和制造&#xff0c;还会永远改变汽车的所有权乃至整个交通运输业务。要实现全自动驾驶的目标&#xff0c;开发人员需要开发极为复杂的软件&#xff0c;软件中融入的人工智能(AI)…

从一到无穷大 #7 Database-as-a-Service租户隔离挑战与解决措施

文章目录 引言计算侧多租户隔离2DFQSQLVMRetro 其他隔离方法其他 引言 在云环境中租户之间的资源共享对于运营商的成本效益来说非常重要&#xff0c;但是一个主要问题是租户之间的资源隔离&#xff0c;这通常与Qos息息相关&#xff0c;从多租户的角度讲&#xff0c;安全性/性能…

〖Python网络爬虫实战⑲〗- 数据存储之CSV文件

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付…

DolphinScheduler海豚调度教程

DolphinScheduler 教程 &#xff08;一&#xff09;入门指南 简介 关于Dolphin Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统。解决数据研发ETL 错综复杂的依赖关系&#xff0c;不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式…

欧拉奔赴品牌2.0时代,女性汽车真实用户需求被定义?

每年的上海国际汽车工业展览会&#xff0c;不仅是各大汽车品牌的技术“秀场”&#xff0c;也是品牌的营销“修罗场”。今年上海车展出圈的营销事件特别多&#xff0c;热度甚至一再蔓延到汽车行业外&#xff0c;其中欧拉也贡献了不少流量。 据了解&#xff0c;在2023上海车展欧…

ModuleNotFoundError: No module named ‘mmcv._ext‘

mmsegmentation使用pyinstaller打包出现问题 mmsegmentation是商汤开源的语义分割框架&#xff0c;里面包含了大量SOTA模型&#xff0c;十分适合从事语义分割工作的小白学习。 最近想将mmsegmentation打包成exe进行使用&#xff0c;但是遇到了一个问题&#xff0c;在打包的过…

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品&#xff0c;虽然从使用量来说「简体中文」用户是占多数&#xff0c;但我一直有做多语言的支持&#xff1a;英语、简体中文和繁体中文。习惯上 Google 翻译的我&#xff0c;基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…

目标跟踪--卡尔曼滤波 与 匈牙利算法

目前主流的目标跟踪算法都是基于Tracking-by-Detecton策略&#xff0c;即基于目标检测的结果来进行目标跟踪。 跟踪结果中&#xff0c;每个bbox左上角的数字是用来标识某个人的唯一ID号。那么问题就来了&#xff0c;视频中不同时刻的同一个人&#xff0c;位置发生了变化&#x…

《智能手机心率和呼吸率测量算法的前瞻性验证》阅读笔记

目录 一、论文摘要 1.背景 2.方法 3.结果 4.结论 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff…

【算法】冒泡排序

一.冒泡排序 主要思想&#xff1a; 反复交换相邻的元素&#xff0c;使较大的元素 逐渐冒泡到数组的末尾&#xff0c;从而实现排序的效果 实现过程&#xff1a; 1.遍历待排序数组&#xff0c;比较相邻的元素&#xff0c;如果前面的元素比后面的元素大&#xff0c; 就交换这两…

07 Kubernetes 网络与服务管理

课件 Kubernetes Service是一个抽象层&#xff0c;用于定义一组Pod的访问方式和访问策略&#xff0c;其作用是将一组Pod封装成一个服务&#xff0c;提供一个稳定的虚拟IP地址和端口号&#xff0c;以便于其他应用程序或服务进行访问。 以下是Kubernetes Service YAML配置文件的…

transformer and DETR

RNN 很难并行化处理 Transformer 1、Input向量x1-x4分别乘上矩阵W得到embedding向量a1-a4。 2、向量a1-a4分别乘上Wq、Wk、Wv得到不同的qi、ki、vi&#xff08;i{1,2,3,4}&#xff09;。 3、使用q1对每个k&#xff08;ki&#xff09;做attention得到a1,i&#xff08;i{1,2,3,4…

项目经理在项目中是什么角色?

有人说&#xff0c;项目经理就是一个求人的差事&#xff0c;你是在求人帮你做事。 有人说&#xff0c;项目经理就是一个与人扯皮的差事&#xff0c;你要不断的与开发、产品、测试等之间沟通、协调。 确实&#xff0c;在做项目的时候&#xff0c;有的人是为了完成功能&#x…

( 数组和矩阵) 769. 最多能完成排序的块 ——【Leetcode每日一题】

❓769. 最多能完成排序的块 难度&#xff1a;中等 给定一个长度为 n 的整数数组 arr &#xff0c;它表示在 [0, n - 1] 范围内的整数的排列。 我们将 arr 分割成若干 块 (即分区)&#xff0c;并对每个块单独排序。将它们连接起来后&#xff0c;使得连接的结果和按升序排序后…

1. 先从云计算讲起

本章讲解知识点 什么是云计算&#xff1f; 为什么要用云计算&#xff1f; 物理服务器与云服务器对比 云计算服务类型 云计算部署类型 1. 什么是云计算&#xff1f; 云计算是一种通过计算机网络以服务的方式提供动态可伸缩的虚拟化资源的计算模式。按照服务层次分为IaaS、…

Nautilus Chain 测试网第二阶段,推出忠诚度计划及广泛空投

随着更多的公链底层面向市场&#xff0c;通过参与早期测试在主网上线后获得激励成为了行业的一个热点话题&#xff0c;在 Apots、Arbitrum One、Optimism等陆续发放了测试空投后&#xff0c;以 Layer3为主要特性的 Nautilus Chain 也在前不久明确表示将会有空投&#xff0c;引发…

ESP8266_RTOS_SDK之SPIFFS

需要在ESP8266的FLASH中存储一些可变参数&#xff0c;有两种方式&#xff0c;一种是调用SPI Flash API直接指定地址读写FLASH&#xff1b;二是在SPI FLASH上创建一块SPIFFS 分区&#xff0c;以读写文件的形式存取数据。 下面记录第二种方式&#xff0c;使用SPIFFS文件系统存取…