Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
hotpatch-for-apache-log4j2 — 一个用于热修补 CVE-2021-44228 中 log4j RCE 漏洞的代理。 | Kitploit
工具/GitHubGitHub/corretto/hotpatch-for-apache-log4j2
防御工具漏洞分析漏洞利用供应链安全事件响应
GitHubcorretto/hotpatch-for-apache-log4j2

hotpatch-for-apache-log4j2

一个用于热修补 CVE-2021-44228 中 log4j RCE 漏洞的代理。

查看仓库
497723年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Log4jHotPatch

这是一个将 Java agent 注入到正在运行的 JVM 进程中的工具。该 agent 会尝试修补所有已加载的 org.apache.logging.log4j.core.lookup.JndiLookup 实例的 lookup() 方法,使其无条件返回字符串 "Patched JndiLookup::lookup()"。该工具旨在解决 CVE-2021-44228 中披露的 Log4j 远程代码执行漏洞,而无需重启 Java 进程。该工具同样可用于解决 CVE-2021-45046。

目前仅在 Linux 上使用 JDK 8、11、15 和 17 进行过测试!

构建

Gradle

要在 Linux、mac 和 Windows 子系统(WSL)上构建

root@kitploit:~
./gradlew build

要在 Windows 上构建

root@kitploit:~
.\gradlew.bat build

根据你构建的平台,将生成 build/libs/Log4jHotPatch.jar。

Maven

要使用 Maven 构建,请执行

root@kitploit:~
mvn clean package

这将生成 target/Log4jHotPatch.jar。

运行

JDK 8

root@kitploit:~
java -cp <java-home>/lib/tools.jar:Log4jHotPatch.jar Log4jHotPatch <java-pid>

JDK 11 及更高版本

root@kitploit:~
java -jar Log4jHotPatch.jar <java-pid>

运行静态 agent

只需将 agent 添加到你的 java 命令行中,如下所示:

root@kitploit:~
java -classpath <class-path> -javaagent:Log4jHotPatch.jar <main-class> <arguments>

测试 agent

这里有一组可以在 Gradle 或 Maven 之外运行的测试。

root@kitploit:~
build-tools/bin/run_tests.sh Log4jHotPatch.jar <JDK_ROOT>

已知问题

如果你遇到如下错误:

root@kitploit:~
Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: The VM does not support the attach mechanism
	at jdk.attach/sun.tools.attach.HotSpotAttachProvider.testAttachable(HotSpotAttachProvider.java:153)
	at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:56)
	at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
	at Log4jHotPatch.loadInstrumentationAgent(Log4jHotPatch.java:115)
	at Log4jHotPatch.main(Log4jHotPatch.java:139)

这意味着你的 JVM 拒绝了任何形式的附加(attach)操作,因为它是以 -XX:+DisableAttachMechanism 参数运行的。

如果你遇到如下错误:

root@kitploit:~
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
	at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
	at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
	at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
	at Log4jHotPatch.loadInstrumentationAgent(Log4jHotPatch.java:182)
	at Log4jHotPatch.main(Log4jHotPatch.java:259)

这意味着你使用的用户(包括 root)与目标 JVM 的运行用户不同。JDK 8 无法以 root 用户执行修补操作(并会在目标 JVM 中触发线程转储,这无害)。在 JDK 11 中,以 root 进程修补非 root 进程则完全可以正常工作。

如果你在目标进程中遇到如下错误:

root@kitploit:~
Exception in thread "Attach Listener" java.lang.ExceptionInInitializerError
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
        at sun.instrument.InstrumentationImpl.loadClassAndCallAgentmain(InstrumentationImpl.java:411)
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "log4jFixerAgentVersion" "write")
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
        at java.security.AccessController.checkPermission(AccessController.java:886)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.System.setProperty(System.java:794)
        at Log4jHotPatch.<clinit>(Log4jHotPatch.java:66)

这意味着目标进程安装了安全管理器(Security Manager)。请在目标进程中查找以下命令行选项:

root@kitploit:~
-Djava.security.policy=/local/apollo/.../apollo-security.policy

如果遇到此错误,请确保你使用的是最新版本的工具

重要提示: 如果你曾以错误的用户身份尝试修补,则在再次尝试之前可能需要删除 .attach_pid<pid> 文件(位于 /tmp 和/或 VM 进程的工作目录中)。这些文件需要具有正确的所有权,附加(attach)操作才能成功。

下载工具