实战遇到的 Apache Karaf Web Console 后台 RCE
字数 1496 2025-09-23 19:27:38

Apache Karaf Web Console 后台 RCE 漏洞分析与利用

1. 漏洞概述

Apache Karaf是基于OSGi的运行时容器,用于部署和管理捆绑包。该漏洞存在于Karaf Web Console后台,攻击者可通过默认凭证进入后台,进而实现远程代码执行。

2. 环境搭建

2.1 环境下载

  • 官方下载地址:https://karaf.apache.org/download.html
  • 具体版本:https://archive.apache.org/dist/karaf/4.0.4/apache-karaf-4.0.4.zip

2.2 配置修改

编辑{KARAF_HOME}/etc/org.ops4j.pax.url.mvn.cfg文件,在org.ops4j.pax.url.mvn.repositories中添加国内镜像源:

org.ops4j.pax.url.mvn.repositories=\
    https://maven.aliyun.com/repository/public@id=alibaba,\
    https://repo1.maven.org/maven2@id=central

2.3 启动与安装

  1. 运行bin/karaf.bat启动Karaf
  2. 添加Karaf官方仓库并安装必要功能:
feature:repo-add mvn:org.apache.karaf.features/standard/4.0.4/xml/features
feature:install http
feature:install webconsole

2.4 访问控制台

  • WebConsole默认端口:8181
  • 访问地址:http://x.x.x.x:8181/system/console/
  • 默认凭证:karaf/karaf

3. 漏洞利用方法

3.1 OSGi Bundle Install RCE

在后台存在"Upload/Install Bundles"功能,可安装自定义bundle实现RCE。

利用原理

  • 通过org.apache.karaf.bundle.command.Install安装恶意bundle
  • 当start参数为true时,会触发BundleActivator的start()方法

恶意bundle构造

参考项目:https://github.com/moghaddam/developmentor

  1. 使用Maven构建恶意jar包
  2. 通过后台上传并安装
  3. 成功触发RCE

3.2 Jetty内存马注入

环境识别

通过报错/Header头识别Jetty版本:9.2.14.v20151106

注入方法

  1. 使用Unsafe加载内存马
  2. 生成蚁剑连接载荷
  3. 连接时需要添加认证头:
    Authorization: Basic a2FyYWY6a2FyYWY=
    

注意事项

  • 冰蝎和哥斯拉可能报错(环境相关问题)
  • 实战中内存马注入可能失败
  • 回显需要不断stop->start操作,使用不便

3.3 OSGi API注册Servlet

实现原理

参考官方代码:https://github.com/apache/karaf/blob/karaf-4.0.x/http/src/main/java/org/apache/karaf/http/core/internal/osgi/Activator.java
通过注册自定义ServletService实现内存马功能

代码实现

// Servlet注册服务
public class ServletService {
    public void registerServlet() {
        // 实现Servlet注册逻辑
        // 包含内存马功能
    }
}

// HelloServlet实现内存马逻辑
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        // 内存马实现代码
    }
}

利用效果

  • 注册成功后新增Servlet端点
  • 可通过该Servlet实现持久化访问

4. 实战限制与防护

4.1 利用限制

  • Webshell工具可能无法连接
  • 命令执行可能受限(如只能执行dir)
  • 最新版本已注释掉默认账号密码

4.2 防护措施

  • 删除WebConsole的默认账号密码注释
  • 更新到最新版本Karaf
  • 加强访问控制策略

5. 总结

该漏洞利用Apache Karaf Web Console的默认凭证和OSGi特性,通过多种方式实现RCE:

  1. 恶意bundle安装
  2. Jetty内存马注入
  3. OSGi API Servlet注册

虽然存在一些实战限制,但该漏洞仍具有较高的危害性。建议用户及时更新和加强安全配置。

:本文仅用于安全研究和教育目的,请勿用于非法活动。

Apache Karaf Web Console 后台 RCE 漏洞分析与利用 1. 漏洞概述 Apache Karaf是基于OSGi的运行时容器,用于部署和管理捆绑包。该漏洞存在于Karaf Web Console后台,攻击者可通过默认凭证进入后台,进而实现远程代码执行。 2. 环境搭建 2.1 环境下载 官方下载地址:https://karaf.apache.org/download.html 具体版本:https://archive.apache.org/dist/karaf/4.0.4/apache-karaf-4.0.4.zip 2.2 配置修改 编辑 {KARAF_HOME}/etc/org.ops4j.pax.url.mvn.cfg 文件,在 org.ops4j.pax.url.mvn.repositories 中添加国内镜像源: 2.3 启动与安装 运行 bin/karaf.bat 启动Karaf 添加Karaf官方仓库并安装必要功能: 2.4 访问控制台 WebConsole默认端口:8181 访问地址:http://x.x.x.x:8181/system/console/ 默认凭证:karaf/karaf 3. 漏洞利用方法 3.1 OSGi Bundle Install RCE 在后台存在"Upload/Install Bundles"功能,可安装自定义bundle实现RCE。 利用原理 通过 org.apache.karaf.bundle.command.Install 安装恶意bundle 当start参数为true时,会触发BundleActivator的start()方法 恶意bundle构造 参考项目:https://github.com/moghaddam/developmentor 使用Maven构建恶意jar包 通过后台上传并安装 成功触发RCE 3.2 Jetty内存马注入 环境识别 通过报错/Header头识别Jetty版本:9.2.14.v20151106 注入方法 使用Unsafe加载内存马 生成蚁剑连接载荷 连接时需要添加认证头: 注意事项 冰蝎和哥斯拉可能报错(环境相关问题) 实战中内存马注入可能失败 回显需要不断stop->start操作,使用不便 3.3 OSGi API注册Servlet 实现原理 参考官方代码:https://github.com/apache/karaf/blob/karaf-4.0.x/http/src/main/java/org/apache/karaf/http/core/internal/osgi/Activator.java 通过注册自定义ServletService实现内存马功能 代码实现 利用效果 注册成功后新增Servlet端点 可通过该Servlet实现持久化访问 4. 实战限制与防护 4.1 利用限制 Webshell工具可能无法连接 命令执行可能受限(如只能执行dir) 最新版本已注释掉默认账号密码 4.2 防护措施 删除WebConsole的默认账号密码注释 更新到最新版本Karaf 加强访问控制策略 5. 总结 该漏洞利用Apache Karaf Web Console的默认凭证和OSGi特性,通过多种方式实现RCE: 恶意bundle安装 Jetty内存马注入 OSGi API Servlet注册 虽然存在一些实战限制,但该漏洞仍具有较高的危害性。建议用户及时更新和加强安全配置。 注 :本文仅用于安全研究和教育目的,请勿用于非法活动。