關于log4j 1.x JMSAppender遠程命令執行漏洞利用的研究
一顆小胡椒2021-12-21 13:10:51
漏洞描述
Apache Log4j 1.2 版本的 Java 日志庫中存在一個缺陷,JMSAppender 容易受到不受信任 數據的反序列化的影響,如果部署的應用程序配置為使用 JMSAppender 和攻擊者的 JMS Broker,允許遠程攻擊者在服務器上執行代碼。發現存在 JNDI 遠程命令執行漏洞,效果與 log4j2 漏洞類似,但利用條件相對苛刻。
利用條件
1. 要有 jms 的環境支持
2. 需要能有寫如 log4j.properties 文件內容的權限
復現截圖


漏洞分析
通過對漏洞的調試,發現在 JMSAppender 中調用了 lookup 方法,這是因為我們在 log4j.properties 中寫入了 log4j.appender.jms=org.apache.log4j.net.JMSAppender,即去調用 JMSAppender.java 中的 activateOptions 方法。然后在 ctx.lookup(name) 中傳入我們指定的惡 意 LDAP 服務地址,從而觸發了遠程代碼執行漏洞。所以從中我們可以看出要必須支持 jms 代理的類才可以執行 rce,本例中就是 activemq 存在 jms 代理的類,所以才執行了該漏洞, 否則將不存在問題。也就是說該漏洞不會出現太大的影響,因為首先需要修改 log4j 的配置, 除非我們利用了其他一些漏洞進行寫入,否則將很難利用該點進行 RCE。Log4j2 的 RCE 由于 是在用戶輸入端就可以觸發,所以相比 log4j2 的漏洞影響要低很多。

一顆小胡椒
暫無描述