从点到线的漏洞挖掘

关注微信公众号获取更多资讯,第一时间学习最新前沿渗透技术!
在这里插入图片描述

前言

在漏洞挖掘的过程中会有一些小的漏洞点,例如:SpringBoot未授权弱口令API接口泄露等等。如果没有对这些小的漏洞点进行合理的整理和利用,可能渗透就到此为止了,造成的危害也是有限的。反之则有可能因为某一个小点从而使整个渗透过程变得通透,下面就是一次SpringBoot未授权的渗透案例

注:由于某些原因,所有漏洞都仅仅停留在信息层面的整理和利用,并没有进一步深入挖掘

信息收集

首先信息收集的第一步肯定是子域名扫描这没得说,在这之后我将子域名的IP进行排序
image.png

利用排序可以快速得到IP的分布情况,比如上图就很明显看出在1.x.x.0/24的资产比较多,我就对该C段进行了WEB存活扫描以及常见的目录扫描
image.png

结果成功扫描到一个SpringBoot的未授权访问
image.png

经过一番查找,最终在/trace(记录客户端对服务器发起的请求包含参数、请求头、Cookie等信息)下发现了有价值的东西
image.png

通过关键字搜索发现管理后台以及账号密码(login)
image.png

访问该后台成功登录
image.png

通过后台查询模块的功能,得到一些无法通过扫描来获取的网站,分别是站点B、站点C
image.png

站点A渗透

登录成功后,返回包返回了该用户的个人信息(姓名,手机号,身份证)
image.png

这一点让我想起来之前测试其资产下的另一个网站,此网站的默认密码就与员工的身份证相关
image.png
image.png

利用刚刚的返回身份证信息以及泄露的默认密码规则,登录了该网站,运气很好
image.png

接着找到一处常规的注入点(典型的order by注入)
image.png

简单的说一下注入的思路,数据库为MySQL
第一点:此处的注入点有两个orderByTypeorderByCol所以可以利用payload拼接绕过WAF
第二点:利用{identifier expr}的格式绕过WAF
第三点:利用if()updatexml()函数使mid(user(),1,1)=x正确时页面抛出异常,借此获取user()
image.png

上面这个注入点是比较明显的,另一个注入是通过查看JS发现后台管理地址
image.png
image.png

访问后台地址,结果并不理想,不能直接进入
image.png

继续分析JS文件,发现一处后台功能URL
image.png

构造URL访问,虽然页面没有什么有价值的信息
image.png

但是JS可是别有洞天
image.png

上面的JS包含了几乎所有后台接口,其中包括比较重要的用户管理接口。恶心的又来了,虽然接口泄露了但是调用接口的JS没有加载出来,所以就不知道该接口需要什么参数,所以绝大多数接口都是如下界面
image.png

不过经过测试,也有一两个接口是不需要参数的✌
image.png

查看请求包时,又是一个很常规的注入(数据字段可控)
image.png

简单的说一下注入的思路,数据库为MySQL
第一点:利用{identifier expr}的格式绕过WAF
第二点:通过AND以及mid(user(),1,1)=A判断页面返回内容,来获取user()
image.png

站点B渗透

其中的一个URLhttp://xxxxtest.target.com/xxxx/#/home,通过vConsole和test关键字就可以看出来,这是一个测试站
image.png

根据其域名命名特征,使用OneForAll对子域名进行Fuzz,命令如下

python3 brute.py --target target.com --fuzz True --place xxxx*.target.com --rule '[a-z]{3}' run

成功Fuzz出来两个子域名,其中一个子域名正是对应的生产环境
image.png

还是常规操作,访问首页一片空白,查看JS泄露接口
image.png

根据router构造URL
image.png

期间用burpsuite截包,提示代理人编号为空
image.png

查看该页面的JS源码,所以只要添加agentCode参数就可以了
image.png

根据站点A获取的员工账号可以的得知agentCode的规则,所以可以对agentCode进行爆破,过滤出有数据的账号
image.png

接下来就很常规了,burpsuite开启拦截,修改请求包,添加agentCode,前台就会获取到数据
image.png
image.png
image.png

站点C渗透

访问首页啥也没有
image.png

JS泄露接口
image.png

构造请求,提示token错误,这里的token就是前面后台的token
image.png

测试后,发现queryString存在注入(常规注入参数),简单说下思路,数据库为MySQL
第一点:利用HTTP参数污染绕过WAF
第二点:利用if()和exp()函数使mid(schema(),1,1)=x正确时页面抛出异常,借此获取schema()image.png

一些其它的点

登录站点A可以得知它是企业员工学习的网站,通过搜索课程(OA、VPN、邮箱、APP、管理员)可以获取到一些有价值的信息,例如:
默认的账号密码
image.png
image.png

企业内部APP
image.png

等等…

### VConsole 的简介与使用方法 VConsole 是一款轻量级的前端调试工具,主要用于移动端 Web 应用程序的开发和调试。它能够帮助开发者实时查看 JavaScript 日志、网络请求以及其他调试信息。 #### 安装方式 可以通过多种方式进行安装: 1. **通过 NPM/Yarn 安装** 使用包管理器可以方便地集成到现代前端项目中。 ```bash npm install vconsole --save ``` 或者 ```bash yarn add vconsole ``` 2. **通过 CDN 引入** 如果不想增加项目的依赖项,可以直接通过 CDN 加载脚本文件。 ```html <script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script> ``` #### 初始化与基本使用 在完成安装之后,需要初始化并创建一个 VConsole 实例以便于后续操作。 对于基于模块化的项目(如 Vue),可以在入口文件中引入: ```javascript import VConsole from 'vconsole'; const vConsole = new VConsole(); // 创建实例 [^1] // 开始记录日志 console.log('This is a test log'); ``` 如果是普通的 HTML 文件,则需按照如下方式实现: ```html <script src="path/to/vconsole.min.js"></script> <!-- 替换为实际路径 --> <script> var vConsole = new window.VConsole(); // 创建实例 [^3] </script> ``` #### 配置选项 为了满足不同场景下的需求,VConsole 提供了一些自定义配置参数。例如调整主题颜色等外观属性。 ```javascript const vConsole = new VConsole({ theme: 'dark', // 设置深色模式 }); ``` #### 移除 VConsole 实例 当不再需要此工具时,可通过调用 destroy 方法释放资源。 ```javascript vConsole.destroy(); ``` #### 打印行为的变化 一旦加载了 VConsole 插件,所有的 `console.*` 函数不仅会在浏览器默认控制台显示输出内容,在页面上的虚拟终端也会同步展示这些消息 [^5]。 --- ### 示例代码片段 以下是完整的示例演示如何在一个简单的 Vue 项目中启用 VConsole 功能。 ```javascript // main.js (Vue 项目中的主入口文件) import Vue from 'vue'; import App from './App.vue'; // 导入并启动 VConsole import VConsole from 'vconsole'; const vConsole = new VConsole(); new Vue({ render: h => h(App), }).$mount('#app'); // 测试日志 console.warn('Warning message!'); console.error('Error occurred.'); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值