CVE-2021-45232分析(APISIX网关未授权访问)

渗透技巧 3年前 (2022) admin
673 0 0


文章首发于:

火线Zone社区(https://zone.huoxian.cn/)


背景


apisix网关之前出过一个dashboard api未授权访问漏洞 [1]:因为访问下面两个接口不需要身份认证,所以可以利用这两个接口进行rce。


CVE-2021-45232分析(APISIX网关未授权访问)


在刚分析这个漏洞时,我有点困惑:


CVE-2021-45232分析(APISIX网关未授权访问)


filter目录下的代码看着像是”中间件”(或者叫”过滤器”)的实现,而”中间件”应该是所有请求都会经过”中间件”的业务逻辑,那为什么访问上面的两个接口就没有经过filter.AuthenticationMiddleware中间件的认证逻辑呢?为什么访问其他接口就会经过filter.AuthenticationMiddleware中间件的认证逻辑呢?


虽然动态调试下个断点,就能看到函数调用流程,但是我还想知道”路由”和”中间件”从web框架层来看是怎么设计的。


apisix项目用到了gin框架和droplet框架,本文记录我对这两个框架”路由”和”中间件”使用和设计的研究,以解决自己的疑惑。


分析


01.为什么其他接口就会经过filter.AuthenticationMiddleware中间件的逻辑?


“业务代码”可以使用”gin框架提供的Use接口”注册中间件,比如下面这样


CVE-2021-45232分析(APISIX网关未授权访问)


从上图中并没有看到filter.AuthenticationMiddleware中间件被注册,那么为什么其他接口就会经过auth中间件的逻辑?


比如GET /apisix/admin/routes HTTP/1.1


答案在droplet库:apisix通过droplet接口注册了filter.AuthenticationMiddleware中间件。


CVE-2021-45232分析(APISIX网关未授权访问)


这样当访问/apisix/admin/routes路径时,请求会经过gin框架注册的”中间件”、droplet注册的”中间件”。


CVE-2021-45232分析(APISIX网关未授权访问)
CVE-2021-45232分析(APISIX网关未授权访问)


有一个不严谨的结论:上面的两张图中,handlers和mws数组中的所有”函数”会被依次调用。


02.为什么

/apisix/admin/migrate/export接口不会经过filter.AuthenticationMiddleware中间件的逻辑?


/apisix/admin/migrate/export路由对应的”处理函数”并不是wgin.Wraps包装的,这样代码流程会不从gin框架转移到droplet框架。


CVE-2021-45232分析(APISIX网关未授权访问)


对比可以看到/apisix/admin/routes路由对应的”处理函数”是wgin.Wraps返回的,这样代码流程会从gin框架转移到droplet框架。


CVE-2021-45232分析(APISIX网关未授权访问)


小结:gin框架和droplet框架通过wgin.Wraps包装的func(ctx *gin.Context)函数类型连接到了一起。


03.怎么修复的?


从这个commit[2]中可以看到:


  • gin框架中

    filter.AuthenticationMiddleware中间件被添加

  • droplet框架中

    filter.AuthenticationMiddleware中间件被删除


CVE-2021-45232分析(APISIX网关未授权访问)


总结


本文只零散地记录一小部分gin和droplet框架的内部逻辑,对gin路由和中间件实现有兴趣的可以看《gin框架源码解析》[3]这篇文章。


在分析过程中感觉”实现一个web框架”非常需要”接口”或者”函数类型”,比如net/http和gin框架的连接、gin框架和droplet框架的连接,都是依靠”接口”或者”函数类型”来通信。


参考链接:


[1]https://apisix.apache.org/zh/blog/2021/12/28/dashboard-cve-2021-45232/


[2]https://github.com/apache/apisix-dashboard/commit/b565f7cd090e9ee2043fbb726fbaae01737f83cd


[3]https://www.liwenzhou.com/posts/Go/read_gin_sourcecode/


[4]漏洞分析:

https://mp.weixin.qq.com/s/WEfuVQkhvM6k-xQH0uyNXg




【火线Zone云安全社区群】

进群可以与技术大佬互相交流

进群有机会免费领取节假日礼品

进群可以免费观看技术分享直播

识别二维码回复【社区群】进群

CVE-2021-45232分析(APISIX网关未授权访问)
CVE-2021-45232分析(APISIX网关未授权访问)


【火线zone社区周激励】

2022.2.28 ~ 2022.3.6公告

CVE-2021-45232分析(APISIX网关未授权访问)


【相关精选文章】

CVE-2021-45232分析(APISIX网关未授权访问)
CVE-2021-45232分析(APISIX网关未授权访问)
CVE-2021-45232分析(APISIX网关未授权访问)
CVE-2021-45232分析(APISIX网关未授权访问)


CVE-2021-45232分析(APISIX网关未授权访问)


火线Zone是[火线安全平台]运营的云安全社区,内容涵盖云计算、云安全、漏洞分析、攻防等热门主题,研究讨论云安全相关技术,助力所有云上用户实现全面的安全防护。欢迎具备分享和探索精神的云上用户加入火线Zone社区,共建一个云安全优质社区!


如需转载火线Zone公众号内的文章请联系火线小助手:hxanquan(微信)

CVE-2021-45232分析(APISIX网关未授权访问)

 微信号 

huoxian_zone

CVE-2021-45232分析(APISIX网关未授权访问)

点击阅读原文,加入社区,共建一个有技术氛围的优质社区!

原文始发于微信公众号(火线Zone):CVE-2021-45232分析(APISIX网关未授权访问)

版权声明:admin 发表于 2022年3月8日 下午6:00。
转载请注明:CVE-2021-45232分析(APISIX网关未授权访问) | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...