前言
在漏洞挖掘的过程中会有一些小的漏洞点,例如:SpringBoot未授权
、弱口令
、API接口泄露
等等。如果没有对这些小的漏洞点进行合理的整理和利用,可能渗透就到此为止了,造成的危害也是有限的。反之则有可能因为某一个小点从而使整个渗透过程变得通透,下面就是一次SpringBoot未授权
的渗透案例
注:由于某些原因,所有漏洞都仅仅停留在信息层面的整理和利用,并没有进一步深入挖掘
信息收集
首先信息收集的第一步肯定是子域名扫描这没得说,在这之后我将子域名的IP进行排序
利用排序可以快速得到IP的分布情况,比如上图就很明显看出在1.x.x.0/24
的资产比较多,我就对该C段进行了WEB存活扫描以及常见的目录扫描
结果成功扫描到一个SpringBoot的未授权访问
经过一番查找,最终在/trace
(记录客户端对服务器发起的请求包含参数、请求头、Cookie等信息)下发现了有价值的东西
通过关键字搜索发现管理后台以及账号密码(login)
访问该后台成功登录
通过后台查询模块的功能,得到一些无法通过扫描来获取的网站,分别是站点B、站点C
站点A渗透
登录成功后,返回包返回了该用户的个人信息(姓名,手机号,身份证)
这一点让我想起来之前测试其资产下的另一个网站,此网站的默认密码就与员工的身份证相关
利用刚刚的返回身份证信息以及泄露的默认密码规则,登录了该网站,运气很好
接着找到一处常规的注入点(典型的order by注入)
简单的说一下注入的思路,数据库为MySQL
第一点:此处的注入点有两个orderByType
和orderByCol
所以可以利用payload拼接绕过WAF
第二点:利用{identifier expr}的格式绕过WAF
第三点:利用if()
和updatexml()
函数使mid(user(),1,1)=x
正确时页面抛出异常,借此获取user()
上面这个注入点是比较明显的,另一个注入是通过查看JS发现后台管理地址
访问后台地址,结果并不理想,不能直接进入
继续分析JS文件,发现一处后台功能URL
构造URL访问,虽然页面没有什么有价值的信息
但是JS可是别有洞天
上面的JS包含了几乎所有后台接口,其中包括比较重要的用户管理接口。恶心的又来了,虽然接口泄露了但是调用接口的JS没有加载出来,所以就不知道该接口需要什么参数,所以绝大多数接口都是如下界面
不过经过测试,也有一两个接口是不需要参数的✌
查看请求包时,又是一个很常规的注入(数据字段可控)
简单的说一下注入的思路,数据库为MySQL
第一点:利用{identifier expr}的格式绕过WAF
第二点:通过AND以及mid(user(),1,1)=A
判断页面返回内容,来获取user()
站点B渗透
其中的一个URLhttp://xxxxtest.target.com/xxxx/#/home,通过vConsole和test关键字就可以看出来,这是一个测试站
根据其域名命名特征,使用OneForAll对子域名进行Fuzz,命令如下
python3 brute.py --target target.com --fuzz True --place xxxx*.target.com --rule '[a-z]{3}' run
成功Fuzz出来两个子域名,其中一个子域名正是对应的生产环境
还是常规操作,访问首页一片空白,查看JS泄露接口
根据router构造URL
期间用burpsuite截包,提示代理人编号为空
查看该页面的JS源码,所以只要添加agentCode
参数就可以了
根据站点A获取的员工账号可以的得知agentCode
的规则,所以可以对agentCode
进行爆破,过滤出有数据的账号
接下来就很常规了,burpsuite开启拦截,修改请求包,添加agentCode
,前台就会获取到数据
站点C渗透
访问首页啥也没有
JS泄露接口
构造请求,提示token错误,这里的token就是前面后台的token
测试后,发现queryString存在注入(常规注入参数),简单说下思路,数据库为MySQL
第一点:利用HTTP参数污染绕过WAF
第二点:利用if()
和exp()
函数使mid(schema(),1,1)=x
正确时页面抛出异常,借此获取schema()
一些其它的点
登录站点A可以得知它是企业员工学习的网站,通过搜索课程(OA、VPN、邮箱、APP、管理员)可以获取到一些有价值的信息,例如:
默认的账号密码
企业内部APP
等等......
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论