
CVE 2021-44228 概念验证。Log4Shell 是一种利用存在漏洞的 Log4J 版本对服务器发起的攻击。
Apache Log4j2 2.0-beta9 至 2.15.0(不包括 2.12.2、2.12.3 和 2.3.1)
配置、日志消息和参数中的 JNDI 功能未针对攻击者控制的 LDAP 及其他 JNDI 相关端点提供保护。当消息查找替换功能启用时,能够控制日志消息或日志消息参数的攻击者可以执行从 LDAP 服务器加载的任意代码。从 log4j 2.15.0 起,此行为默认被禁用。从 2.16.0 版本(以及 2.12.2、2.12.3 和 2.3.1)开始,该功能已被完全移除。注意,此漏洞特定于 log4j-core,不影响 log4net、log4cxx 或其他 Apache 日志服务项目。
因此,其 CVSS v3 评分达到 10.0(最高分)。
幸运的是,这是一个 0-day 攻击。因此开发者已在 0-day 内修复。
Apache Log4j 项目是最广泛部署的开源软件之一,为 Java 应用提供日志记录功能。
首先,此 PoC 使用:
在 http_server 目录下,你将找到两个文件:MyExploit.java 及其编译后的 .class 文件 MyExploit.class
💡提醒:使用 javac 文件名.java 编译 Java 类 :)
你可以使用以下命令即时运行 HTTP 服务器: python -m http.server [端口] 在此情况下
marshalsec 的仓库 详情见此
christophetd 的仓库 详情见此
通常,请求头中的目标字段是 User-agent,而在本 PoC 中将使用 X-Api-Version
此 PoC 在漏洞服务器上执行 命令执行,以便在 tmp 文件夹中 创建一个名为 "pwned_by_pierpaolosestito_dev" 的文件。 MyExploit.java 还包含一个恶意负载,允许攻击者执行 反向代码执行 并获得 反向 Shell。
💡一些提示: 如果你运行 docker exec [容器ID] ifconfig,你会发现它是一个 runner,不在你的本地子网中。为了实现 RCE,你可以修改 MyExploit.java 中包含 RCE 命令字符串的 IP。由于 Docker runner 无法通过私有 IP 联系到你,你需要一个公共 IP,可以通过 端口转发 获取。