漏洞描述
攻击者可以向batch-requests插件发送请求来绕过管理API的IP限制。Apache APISIX的默认配置(带有默认的API密钥)容易受到远程代码执行的攻击。当管理密钥更改或管理API端口更改为与数据面板不同的端口时,影响较小。但是,绕过Apache APISIX数据面板的IP限制仍然存在风险。在batch-requests插件中有一个检查,它用真实的远程IP覆盖客户端IP。但是由于代码中的一个bug,这个检查可以被绕过。
batch-requests 插件介绍
https://apisix.apache.org/zh/docs/apisix/2.12/plugins/batch-requests/
复现思路:
3、漏洞测试。
漏洞版本
Apache APISIX 2.10.0 ~ 2.10.4 LTS 之间的所有版本(不包含 2.10.4)
环境搭建
搭建方式 |
Docker 搭建 |
||
版本号 |
|
|
|
|
|
|
|
|
|
|
|
环境搭建可以使用下面这个Github地址:
Github 地址 https://github.com/twseptian/cve-2022-24112/tree/main/apisix-docker
cd CVE-2022-24112-main/apisix-docker/example/
vi apisix_conf/config.yaml
将 allow_admin 修改为 127.0.0.0/24,此处修改的实际为nginx.conf。
使用 docker-compose 创建docker容器。
docker-compose -p apisixCveTest up -d
在服务启动阶段、会读取config.yaml、生成nginx.conf 。
1、会基于 Lua 模板 apisix/cli/ngx_tpl.lua 文件生成 nginx.conf。(APISIX架构介绍:https://blog.csdn.net/alex_yangchuansheng/article/details/122053371)
2、调用 ngx_http_access_module 模块。该模块限制客户端对某些地址的访问。(nginx 模块介绍:http://nginx.org/en/docs/http/ngx_http_access_module.html#allow)
Admin api 接口如下:
漏洞分析
diff :
函数参数为data是我们传入的请求体经过json.decode()后的数据、类型为"table"。
2、通过遍历data.pipeline和data.headers 、将data.headers 出现的头信息赋值给data.pipline。发现data.headers中出现了x-real-ip:127.0.0.1 ,这是我们调用batch-requests插件传递的头信息,而此时系统默认的X-Real-IP为大写。
查看此时的栈数据。在data.headers 中出现了 x-real-ip 与 X-Real-IP。
最后经由batch-requests 插件、使用PUT方法将请求发送到 /apisix/admin/xxxx 注册新的路由。通过filter_func 参数可写入一段lua代码、造成远程代码执行。
漏洞测试
利用条件
-
batch-requests插件默认开启状态。
-
用户使用了 Apache APISIX 默认配置(启用 Admin API ,使用默认 Admin Key 且没有额外分配管理端口),攻击者可以通过 batch-requests 插件调用 Admin API 。
攻击思路
1、利用batch-requests 插件漏洞、绕过请求头检测;
2、通过伪造请求头、向Admin API 注册路由;
修复意见
-
更新至最新版本
-
禁用batch-requests 插件
参考材料
APISIX官网:https://apisix.apache.org/docs/apisix/2.12/getting-started/
APISIX Github:https://github.com/apache/apisix
漏洞环境:https://github.com/twseptian/cve-2022-24112
APISIX架构分析:https://blog.csdn.net/alex_yangchuansheng/article/details/122053371
关于Portal Lab
星阑科技 Portal Lab 致力于前沿安全技术研究及能力工具化。主要研究方向为API 安全、应用安全、攻防对抗等领域。实验室成员研究成果曾发表于BlackHat、HITB、BlueHat、KCon、XCon等国内外知名安全会议,并多次发布开源安全工具。未来,Portal Lab将继续以开放创新的态度积极投入各类安全技术研究,持续为安全社区及企业级客户提供高质量技术输出。
原文始发于微信公众号(星阑PortalLab):【技术干货】CVE-2022-24112 Apache APISIX 远程代码执行漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论