漏洞描述:
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請求不會被執行。