Vue新攻击面-动态路由实战狩猎
渗透测试
本文实战案例通过学习0xsdeo师傅文章学习而来,建议通读0xsdeo师傅公众号文章了解动态路由这一攻击面,分享一部分简单基础场景Hook案例,简单的调试往往能打开更多的攻击面。
**未经同意禁止转载搬运** 请勿搬运 请勿搬运 请勿搬运 ### 前言 漏洞挖掘测试网站无非两种形式,能注册就测试业务功能点,不能注册那么只能在前台登录框徘徊测试接口,针对接口的渗透测试往期我也发表多诸多文章并且互联网也有非常多优秀的师傅分享过关于`JS`实战案例,如`L@2uR1te` 分享的[JS接口安全之路](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzkzNTUwNTg2Ng==&action=getalbum&album_id=3612666617752059917&subscene=126&scenenote=https://mp.weixin.qq.com/s?__biz=MzkzNTUwNTg2Ng==&mid=2247483754&idx=1&sn=aadd74eccee53d08dded4e183f9b778a&chksm=c3d5099f1ee924ac523b1463ce65257b682885549e84aab2fe077fd3e98c3a72994b3fc9edf9&scene=126&sessionid=1768185594&subscene=7&clicktime=1768185620&enterid=1768185620&click_id=3&key=daf9bdc5abc4e8d0d1797302c0d59751e304f299d9f6b30a66ea2fcf77f83b75856fb1a596c99a9eb961855f52f1f2486ea846725a5beb883540525db383dc0db7b3da4c7d0e77fb2ffec3af6ffcc71355b7e76e56aa6d807b5d1125eb7b276129829d71a152fb1257c08fd2034f6de1f3b9103b1cbbe012399b952ce096898c&ascene=1&uin=MzQ1NjA5MTY0MQ==&devicetype=UnifiedPCWindows&version=f254162e&lang=zh_CN&countrycode=CN&exportkey=n_ChQIAhIQu6eIlwM5DSTIUIO8JUB1iBLcAQIE97dBBAEAAAAAAN//Nzr2CbsAAAAOpnltbLcz9gKNyK89dVj0kLvqalsAC3cJJAFhyI7V9v/5DaOwZBf2byQIfGLcI+c6tLQUBddW2MmgFB7ZB5OI6p373n07deAsqa4mLka5ia+TkHYi8iuc52VDwIRyf9qRzqz3FMi27dLTxljb2iTy/fnCOKD4CnSlZFMPScjPz33t5VQYBuZcD+gpQ1suog/ap1b5ty7kcBomoLWJKKc21ODlkDnaExf4az7xhY+Yrdz+ABnC3JkODwH+//I7bZfvnVumXVU=&acctmode=0&pass_ticket=Rs1q7cOApaW+mf2jvrxVv8gTgR1eyKzaDDsb+J6oeWReDUf1/XzSs/KWtWTc0FA1&wx_header=0&fasttmpl_type=0&fasttmpl_fullversion=8077395-zh_CN-html&from_xworker=1&nolastread=1&sessionid=#wechat_redirect) 系列文章,以及在25年横空出世的Vue绕过路由守卫思路,`0xsdeo` 师傅公众号写过前置的知识介绍,本文实战案例也是我通过学习`0xsdeo`师傅文章学习而来,公众号文章已经把整体知识讲细了,建议通读`0xsdeo` 师傅文章了解动态路由这一攻击面,这里不过多赘述,分享一部分简单基础场景`Hook`案例,简单的调试往往能打开更多的攻击面。 Spade sec 公众号文章 [Web安全](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzkzNTcwOTgxMQ==&action=getalbum&album_id=3560499980693291020&scene=126&sessionid=1774580242231#wechat_redirect)  前后端架构下`Vue`网站`GET` `POST`测试只能是不带任何参数测试接口,`GET`请求好一点的情况下插件匹配到了携带的参数还可以带入数据进行测试`POST`请求只能写空`JSON`然后发包,较好情况下后端报错缺失具体参数那么自己拼接即可,大多数情况下只能是断点`JS`跟出全部参数,或者是提取网站所有字符串参数后对某处接口进行`Fuzz`但这两种方法都需要花费大量的时间进行测试,可能最终你跟出了全部的参数当你满心欢喜进行发包后端反馈`401`结果仍然是一无所获,那么有没有方法测试到所有的接口拿到所有的参数呢? ```php /api/Dashboard/GetPublishDash/ ------ 常规情况 /api/Dashboard/GetPublishDash?id=111 ------ 携带参数情况 ``` 接口想要携带参数完整的被触发需要功能点页面进行调用,功能点页面往往隐藏在登录网站后的系统页面,`Vue`网站路由无论是哈希模式还是历史模式正常情况下访问到的都是已加载路由,并且大部分时候都是不会主动加载系统登录后路由页面,那么动态路由技术就是`Hook JS` 路由数组从而达到加载不被系统加载的路由,访问路由泄露测试功能点比独立测试独立接口更具效率也更容易出现未授权、信息泄露。当然前提也是网站`JS`提供了了未加载路由数组。  ### 未授权\*2 如下网站正常插件只加载10条路由页面,逐一访问也是一些无关痛痒的页面根本访问不到系统登录后路由页面,除了测试接口外没有其他办法,但是具备动态路由技术就可以通过定位未加载路由函数进行`Hook`替换   已加载路由数组`Ae` 对应`AntiDebug`插件识别到的路由数组  定位到`Ee`为未加载路由数组,包含均为系统登录后才可获得的数组,那么定位到二者后再定位到已加载路由数组在哪里被触发。  定位到路由数组在此被返回,`Hook`替换为`Ee` ```php return Ee ```  替换后进行保存`JS`文件新建一个工作区存放我们`Hook`过的`JS` 保存成功文件右下会反馈紫色标记,自此一个简单的动态路由加载替换就完成,刷新网站再次查看插件加载情况。  `VueCrack` `AntiDebug` 插件均识别到了新的路由数组成功绕过路由守卫后访问,后续测试方法也是点点功能点测试未授权操作和信息泄露  最终发现一处未授权增删改如果只有正常黑盒提接口没有参数的情况在是无法发现这个漏洞的,只能常规的进行`Intruder`爆破   又一前后端站点插件匹配已加载路由只有5条  定位路由返回后`Hook`替换加载更多动态路由  逐一访问路由页面后发现信息泄露和未授权增删改   `BP`捕获功能点接口也是携带参数进行请求,如果是正常情况下只有接口没有参数是很难发现这些漏洞的  ### 信息泄露\*2 某次攻防利用此方法成功获取系统百万订单泄露经典的若依框架`UI` 大部分都是二开过的,这里插件识别到的哈希路由共10条,那么进行定位是否提供了动态路由数组  开发很贴心,怕我不会定位暖心的提供了注释现在我们知道了已加载路由数组是`constantRoutes` ```php // 公共路由 var constantRoutes ```  动态路由数组为`dynamicRoutes`,有了这两者再找一下哪里是路由实例器,方法也是跟第一个案例一致这是最简单的情况 ```php // 动态路由,基于用户权限动态去加载 var dynamicRoutes ```  成功识别`Hook`替换后的数组加载动态路由,后续就是点点点调用功能点,携带参数测试未授权,列出几个危害性较大接口  订单接口`100w`停车敏感信息泄露  46w车牌停车信息  当路由页面被测试完成后我还会尝试`JSON`体复用和接口参数复用,利用现有数据回顾插件匹配到的接口如下,缺失订单`ID`,那么在响应包检索此参数 ```php https://xxxxxx/ths_proxy/web-api/payOrderNo/details?orderNo= ```  尴尬了因为漏洞已修复,习惯性发了个包结果被拦,各位师傅明白响应数据复用即可,未修复前订单详情返回手机号及车主姓名  某`SRC`按照前文方法定位路由数组进行替换从而访问更多路由,开启`BP` 逐一访问路由接口记录接口  `/workflow/act/actBusiness/applyList`泄露全部支付订单三要素信息,数据量`59w` 调试`pageSize`值可获取更多, 如若没有动态路由这些参数只能通`Fuzz`或断点`JS`获取   后端数据返回必然会渲染回前端展示,那么自然在前端路由页面中也可以看到具体的详情,配合`AntiDebug`插件清除跳转功能可以浏览无视权限跳转一直固定在此页面浏览  未授权下载消费明细   ### `push` 方式 正常已加载少量路由  检索发现未加载路由,没有变量赋值尝试把数组添加到已加载  主动添加后保存`js` 刷新页面,已成功更多路由页面   开启`bp`访问后台页面并调用其功能点即可携带参数测试未授权漏洞,随着不断的点击路由页面所加载的异步`js`越来越多,那么除去正常的在页面中调用功能点后期还可以对加载的`js`秉承宁错杀不放过的理念使用正则提取更多的接口,通过`get`参数复用、`json`体复用从而挖掘更多漏洞,此方法的好处是不容易遗漏接口,虽然我们通过动态路由成功的进入了后台可以调用更多页面但说不准就存在没有写进数组的路由,自然其中的接口也页面中调用不到,此方式和正常测试并无区别,不过前置参数我们可以通过调用功能得到从而进行复用拼接。  未授权页面调用调用功能点泄露仓库存量列表,`bp`捕获对应携带携带的请求 ```php https://xxxxx/admin/goods/inventory/list ```   未授权积木报表页面,泄露人员信息但是使用工具测试了几个常见`nday`均无法`rce`   访问所有路由后在`bp`中记录到一个人员信息泄露接口,从接口名称不难看出记录的是管理员用户,那么前台也无校验尝试爆破进入后台。 ```php httpszhe:/xxxxxx/admin/admin/list?page=1&limit=20&sort=add_time&order=desc ```  依旧弱口令./ 当使用账号进入后台可以配合未授权检测插件如`xiayue` 测试更多遗漏的漏洞  随意登录一个账号进入后台开启插件被动扫描并配置去除的鉴权字段,点击所有功能点而后来到插件面板进行收菜,无鉴权发包数据包长度还是一致则表示这是一个未授权接口,后续也新发现几个漏洞。   再一处`list`接口检索`cvs`、`xlsx`表格关键字发现存在表格文件  下载后发现一对`aksk` 按照表格的域名推测出阿里云,使用工具进行接管,存在`350g`内容,通过动态路由的方式最终挖掘多个漏洞   ### `AntiDebug_Breake` 清除跳转 `0xsdeo`师傅开发`AntiDebug_Breake`不仅可以对网站算法进行逆向反调式,并且集成`Vue`模块,绕过路由守卫并清除跳转,并且有强力的`JS`代码定位通杀方案脚本,定位到跳转的函数并替换清除, 在进行动态路由调试中我发现往往对于跳转更加严格虽然成功将动态路由`hook`为正常已加载路由,但浏览器仍会存在部分跳转代码`window.location.href` 回到`login`首页极为不便,但通过插件此功能则可以阻断浏览器离开当前页面的行为;分享跳转情况下通过固定路由调试挖掘到的漏洞案例。 插件介绍 [AntiDebug\_Breaker](https://mp.weixin.qq.com/s/nhXHoMAtSoOyN9VZWZYp5A) ```php window.onbeforeunload = () => { debugger; return false; } ```   访问接口后未开启插件前,访问该路由提示报错,正常情况下随着会跳转至`login`路由  此时直接开启邪修禁用跳转  再次通过插件访问该路由虽然仍提示错误,但也访问到了功能点调用接口,结合动态路由往往意味着后台功能接口,权限校验更为严格,但利用此通杀清除方式针对绝大多数前端跳转都非常方便,路由守卫清除和跳转清除这两者善加利用不局限于`Vue`路由测试某些`SSO`统一认证后系统同样适用。   访问功能点后点点测试,最终发现两处接口同一参数存在`SQL`注入无过滤梭哈拿下 ```php { "name":"test'and if(substr(schema(),3,1)='p',exp(999),1) and '1", "tableName":"field_config" } ```  !\[\] 另一功能点不同接口同一参数`SQL`注入  ```php { "name":"新建数据源' and if(substr(schema(),2,1)='p',exp(999),1) and '1", "parm":"autoReconnect=true&useUnicode=true&characterEncoding=utf-8&useSSL=false", "user":"root", "desc":"MySQL app库" } ```  来到一处`h5`站,这里比较幸运已加载路由比较全面,暂时不着急找动态路由,优先测试已加载路由所展示的功能点  但是难免会有几个访问后类似触碰禁忌一般。提示错误或跳转前台又得浪费时间重新打开插件逐一分析,为了一劳永逸则可以开启跳转通杀,使所有正常的路由都可以固定不会被跳转方法所干扰  开启后满满当当的路由则可爽测功能点,最终发现一处`oracle`注入,但是自己倒腾一番发现不熟悉此数据库语句无奈果断请出古希腊掌管`SQL`注入的神    通过布尔注入得出库名,实现从未授权打出`SQL`注入。 ```php 1=1 or 1=decode(substr(user,6,1),'4',1/0,1) ```  此站点同样存在跳转代码,正常插件去访问虽然会一瞬间跳转到指定路由但仍会回到首页登录框提需要账号密码方可登录。通过箭头颜色也可知我是一直在点击`temp-purchase` 路由,只是会瞬间重定向回到前台  可以先打开基础的清除跳转功能,再去正常点击路由访问观察是否跳转,不进行跳转正常测试,若继续跳转打开插件`Debug` 模块开启通杀清除即可  开启后虽然仍然提示用户未登录但相应路路由已成为访问并未跳至`home`路由,后续点点点测试功能收菜即可如果遇到访问重定向回到前台就果断撤离往往会错过很多有价值的漏洞。   
发表于 2026-04-14 09:30:10
阅读 ( 1935 )
分类:
渗透测试
18 推荐
收藏
0 条评论
一天要喝八杯水
大厂螺丝工
7 篇文章
×
温馨提示
您当前没有「奇安信攻防社区」的账号,注册后可获取更多的使用权限。
×
温馨提示
您当前没有「奇安信攻防社区」的账号,注册后可获取更多的使用权限。
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!