log4j2高危漏洞原理分析

原理分析

了解2.15版本前log4j2可输出变量

首先新建一个maven项目,加入log4j2的代码,我们用maven方式,只需要引入这两个pom依赖即可

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.12.0</version>
        </dependency>

随便写一段日志打印

当然你也可以写一个变量,将它输出

假如你的系统在登录的时候,用log4j框架记录了用户名,那么,我输入${java:vm},实质上你会打印出java相关的vm信息,而非${java:vm}。

当然黑客比较聪明,他们会通过一些手段抓取你哪些地方有log4j的打印,比如通过不断试错接口,比如采用dnslog方式进行扫描,探测,一旦抓到系统报错,分析可以利用,就可以进行他的下一步动作了。(这里是另外的技术,不展开讲)

通过jndi注入

上边说到log4j2可以输出变量,那么什么变量可以被利用执行远端代码呢,此次发现的黑客利用的注入方式就是jndi注入了。

如果你是一名黑客,想攻击某台含有log4j漏洞服务器的流程如下:

1.构建破坏代码

这段代码当中的命令,是删除/home/data/test/目录下的所有文件。

当然黑客一般会写一些更复杂的脚本,把你的服务器变成他的矿机,不定时重启你的机器等等。

2.构建中间服务器

一般会启动这样一个服务监听,黑客肯定又更高明的写法,这里只是模拟。

这个方法的意思是,打开7008端口监听,如果有访问,则拿到factoryLocation/factory下的RmiTest引用。

3.构建注入语句

以上代码为模拟,实际情况,可能是掉个接口,或者表单直接输入,当然以上的ip也会更换成黑客的服务器ip。

如此依赖便可在你漏洞机器上执行到1当中的脚本,完成一次完整的攻击。

攻击链路总结

黑客找到漏洞,构建自己的破坏脚本和舰艇服务,黑客通过构建jndi解析语句,将自己远程的类执行到你当前的java服务中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值