Kami menganalisis kerentanan dalam Citrix ADC yang memungkinkan Anda menembus jaringan internal perusahaan dalam satu menit

Pada akhir tahun lalu, seorang pakar Positive Technologies menemukan kerentanan CVE-2019-19781 dalam perangkat lunak Citrix ADC, yang memungkinkan setiap pengguna yang tidak sah untuk menjalankan perintah sistem operasi yang sewenang-wenang. Sekitar 80 ribu perusahaan di seluruh dunia berada di



bawah ancaman . Lebih buruk lagi, Citrix ADC diinstal pada antarmuka antara jaringan eksternal dan internal organisasi. Dengan demikian, setelah mengeksploitasi kerentanan, penyerang segera mendapatkan akses ke jaringan internal perusahaan dan memiliki kemampuan untuk mengembangkan serangan pada segmen jaringan pribadi. Dalam artikel hari ini, penulis studi akan menganalisis kerentanan secara lebih rinci, rincian deteksi dan eksploitasi. Pergilah!







Apa itu Citrix ADC



Citrix ADC adalah solusi pengiriman aplikasi dan penyeimbangan beban berbasis perangkat lunak yang dirancang khusus untuk mempercepat kinerja aplikasi tradisional, cloud, dan web, di mana pun mereka di-host. Kontroler seperti ini paling banyak digunakan dalam industri IT dan telekomunikasi. Menurut perkiraan, pada tahun 2023 permintaan untuk ADC akan meningkat dari perusahaan keuangan dan asuransi.



Seberapa serius itu?



Selama pemantauan ancaman saat ini (intelijen ancaman), ditemukan bahwa setidaknya 80.000 perusahaan dari 158 negara berpotensi rentan. Pada saat kerentanan ditemukan, TOP-5 dengan jumlah organisasi semacam itu termasuk Amerika Serikat (pemimpin absolut - lebih dari 38% dari semua organisasi rentan berlokasi di AS), Jerman, Inggris, Belanda, Australia.



Rusia berada di peringkat ke-26 dalam hal jumlah perusahaan yang berpotensi rentan di berbagai sektor bisnis - total lebih dari 300 organisasi. Kazakhstan dan Belarus masing-masing menempati peringkat ke-44 dan ke-45 dalam hal jumlah perusahaan yang rentan.



Pada Februari 2020, negara-negara teratas dalam hal jumlah organisasi yang berpotensi rentan termasuk Brasil (43% dari jumlah perusahaan di mana kerentanan awalnya diidentifikasi), Cina (39%), Rusia (35%), Prancis (34%), Italia (33%) dan Spanyol (25%). Dinamika terbaik dalam menghilangkan kerentanan ditunjukkan oleh Amerika Serikat, Inggris, dan Australia: di negara-negara ini, 21% perusahaan tercatat terus menggunakan perangkat yang rentan dan tidak mengambil tindakan perlindungan apa pun.







Penemuan dan operasi



Pada awal penelitian saya, saya menemukan bahwa menggunakan Path Traversal, pengguna yang tidak sah memiliki kemampuan untuk mengakses file statis yang tidak dapat diakses tanpa otorisasi (/vpn/../vpns/style.css). Ini ditemukan selama analisis Kotak Hitam dari Citrix ADC.







Perilaku yang dijelaskan di atas menarik minat saya, jadi saya memutuskan untuk mencari gambar Citrix ADC dan menjalankannya secara lokal (terima kasih kepada kolega saya Yuri Aleinov yang telah membantu).



Pertama-tama, kami menganalisis konfigurasi server web Apache (/etc/httpd.conf), yang bertanggung jawab atas antarmuka web aplikasi ini. Seperti yang dapat kita lihat dalam gambar di bawah ini, jalur yang berada di bawah pola " /vpns/portal/scripts/.*\.pl$ " diproses oleh fungsi ModPerl :: Registry. Ternyata mungkin untuk mengeksekusi skrip perl dari folder/ netscaler / portal / script / tanpa otorisasi.







Setelah itu, saya mulai menganalisis skrip yang dapat kita panggil dengan membuka /vpn/../vpns/portal/scripts/ [scriptName] .pl .







Hampir setiap skrip memanggil fungsi csd dari NetScaler :: Portal :: modul UserPrefs ( /netscaler/portal/modules/NetScaler/Portal/UserPrefs.pm ). Fungsi ini berfungsi dengan tajuk HTTP NSC_USER dan NSC_NONCE. Tidak ada tindakan menarik yang diambil dengan header kedua, tetapi nilai header NSC_USER digunakan sebagai nama file. Jika file (yang namanya dilewatkan sebagai nilai header NSC_USER) tidak ada, maka file ini dibuat dengan struktur tertentu, dan jika sudah ada, maka variabel $ doc diuraikan dan didasarkan padanya .. Ternyata jika kita menggunakan lintasan traversal dalam nama file, maka kita dapat membuat file dengan ekstensi ".xml" di direktori mana pun dari sistem file tempat kita memiliki izin menulis. Untuk memeriksanya, kirim baris "../../../../tmp/myTestFile" sebagai nilai header "NSC_USER" dan periksa apakah file ada di direktori "/ tmp /". Pada tahap ini, kami memiliki kemampuan untuk membuat file dengan ekstensi ".xml", tetapi tidak ada cara untuk mengontrol konten file. Mari kita perhatikan script "newbm.pl", yang juga terletak di direktori yang kami minati. Script ini mengambil parameter POST dan menulis ke file (yang namanya ditentukan dalam header NSC_USER) nilai-nilai parameter seperti "url", "title" dan "desc".



























Sekarang dimungkinkan untuk tidak hanya membuat file xml di tempat sewenang-wenang, tetapi juga untuk mengontrol sebagian konten mereka.



Untuk melanjutkan path ke RCE, mari kembali ke konfigurasi server web dan perhatikan bahwa satu path lagi (/ vpns / portal /) ditangani oleh fungsi perl NetScaler :: Portal :: Handler ( / netscaler / portal / modules / NetScaler / Portal / Handler.pm )







Fungsi handler mendapatkan bagian dari path setelah karakter "/" terakhir sebagai nama file, mencarinya di folder "/ netscaler / portal / templates /" dan mencoba merender file ini menggunakan perpustakaan "Template Toolkit". Jadi, jika kita dapat memuat file kita ke folder dengan templat, kita juga dapat memanggil render-nya.











Eksploitasi lebih lanjut diperumit oleh fakta bahwa pustaka Toolkit Templat bekerja dalam mode sedemikian rupa sehingga tidak mungkin untuk mengeksekusi kode perl menggunakan metode standar. Misalnya, arahan " [% PERL%] " tidak dapat digunakan .







Berdasarkan keterbatasan ini, saya memutuskan untuk mencari kerentanan di plugin perpustakaan standar. Pertimbangkan sebuah plugin seperti "Datafile" ( /usr/local/lib/perl5/site_perl/5.14.2/mach/Template/Plugin/Datafile.pm ). File ini agak kecil, jadi kami segera memperhatikan panggilan ke fungsi standar "terbuka" dengan dua argumen. Penggunaan ini tidak aman dan dapat menyebabkan RCE.







Kami mencoba mengeksploitasi kerentanan secara lokal dan sebagai tanda centang kami membuat file "testRCE" di folder "/ tmp /".







Saat ini kami memiliki kemampuan untuk membuat file di tempat sewenang-wenang pada sistem, untuk mengontrol sebagian konten dan kerentanannya di pustaka Toolkit Templat. Kami menggunakan semua ini untuk mendapatkan eksekusi perintah sewenang-wenang dari pengguna yang tidak sah.



Buat file dalam folder dengan templat, yang rendernya akan mengarah pada eksekusi kode dan pembuatan juru bahasa baris perintah web.







Lalu kami membuat file ini.







Kami beralih ke skrip (shell web) yang kami buat sebelumnya dan menjalankan perintah OS sewenang-wenang.







Cara melindungi diri sendiri



Citrix telah merilis panduan untuk mengatasi kerentanan ini. Selain itu, pabrikan merekomendasikan agar pengguna segera memperbarui semua versi perangkat lunak yang rentan ke yang direkomendasikan.



Perusahaan dapat menggunakan firewall tingkat aplikasi untuk memblokir potensi serangan. Misalnya, PT Application Firewall mendeteksi serangan ini di luar kebiasaan: sistem harus dimasukkan ke dalam memblokir permintaan berbahaya untuk perlindungan waktu-nyata. Mempertimbangkan total masa hidup dari kerentanan yang teridentifikasi (telah relevan sejak rilis versi rentan pertama dari perangkat lunak, yaitu, sejak 2014), juga penting untuk mengidentifikasi kemungkinan eksploitasi kerentanan ini (dan, dengan demikian, kompromi infrastruktur) dalam retrospeksi.



Pengguna PT Network Attack Discovery, mulai 18 Desember 2019, dapat memanfaatkan aturan khusus yang mendeteksi upaya untuk mengeksploitasi kerentanan ini secara online.



Penulis : Mikhail Klyuchnikov (@ __mn1__ ), Teknologi Positif



Linimasa



  • 5 Desember 2019 Dilaporkan ke Citrix
  • 19 Desember, 2019 Merilis langkah-langkah mitigasi dari Citrix



All Articles