漏洞描述:
Apache log4j2 2.0 - 2.14.1 版本均受影响
Log4j存在远程代码执行漏洞,该漏洞产生的原因是SocketServer类对于监听获取到的数据并没有进行有效的安全验证,直接进行反序列化处理。攻击者可以传入恶意的序列化数据对漏洞进行利用,向服务器发起远程代码执行攻击。
rmi远程方法调用:jvm与jvm进程做远程交互的服务。
参考:https://blog.csdn.net/weixin_48985078/article/details/121871055
攻击方式:
黑客部署nginx服务器和rmi服务器,nginx中放入攻击脚本(是个class文件)。
服务器的rmi参数必须是true.
通过远程注入方式(rmi协议),让服务器通过log4j2发送rmi请求到rmi服务器,rmi服务器会到nginx服务器中下载攻击脚本到本地,通过类加载机制执行。
JNDI注入简单来说就是在JNDI接口在初始化时,如:InitialContext.lookup(URI),log4j2的logger.info(URI)。如果URI可控,那么客户端就可能会被攻击
解决方法:
- 升级log4j2版本,更新至Apache Log4j 2.15.0-rc2 版本(最佳方法)。
- 设置服务器白名单,不会再访问黑客服务器
- rmi参数改为flase,rmi请求不会被执行。