Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

WBOY
Lepaskan: 2023-05-12 11:19:11
ke hadapan
1010 orang telah melayarinya

Baru-baru ini, semasa kami membantu pelanggan mengesan insiden pencerobohan, kami mendapati bahawa penggodam menggunakan "fungsi penyahmampatan ZIP" tapak web untuk memuat naik cangkerang web sebelum mendapat akses kepada pelayan. Oleh kerana kaedah eksploitasi kebocoran ini agak mewakili dari segi "struktur muatan serangan" dan "laluan penyahmampatan sebenar", dan industri masih tidak memberi perhatian yang cukup kepada kelemahan "penyahmampatan tidak selamat". Oleh itu, kami menulis laporan ini, di mana kami menerangkan proses pengesanan pencerobohan dan penemuan kelemahan, dan mengemukakan beberapa cadangan keselamatan daripada dua dimensi pembangunan keselamatan dan penyelesaian perlindungan produk anjing keselamatan, dengan harapan dapat memberi manfaat kepada industri.

Perlu diambil perhatian bahawa walaupun CMS telah membuat konfigurasi pertahanan yang berkaitan, jika anda terus menulis fail JSP dalam direktori root CMS, ia tidak akan dilaksanakan dan ralat 403 akan dilaporkan. Penyerang mengambil kesempatan daripada ciri penempatan automatik pakej perang dan menggunakan idea ​​"direktori traversal" untuk membuat pakej perang melompat keluar dari direktori akar CMS.

1. Kebolehkesanan pencerobohan

Kakitangan operasi dan penyelenggaraan syarikat menemui keabnormalan tertentu dalam sistem semasa bertugas pada lewat malam mungkin, pelanggan menghubungi syarikat kami Haiqing Laboratory kemudian campur tangan untuk menjalankan kebolehkesanan dan analisis, dan menyediakan pelan pelupusan seterusnya.

Dengan menyemak fail log Tomcat /logs/localhost_access_log.yyyy-MM-dd.txt, kita boleh mendapati bahawa penyerang telah meledakkan antara muka log masuk tapak web (antara muka "POST /cmscp/ "login.do" mempunyai frekuensi capaian yang tinggi), seperti yang ditunjukkan dalam rajah.

Nota: Kod status HTTP apabila letupan berjaya ialah 302, dan kod status HTTP apabila letupan gagal ialah 303.

Untuk menentukan sama ada penyerang telah memuat naik tapak web Trojan, gunakan enjin pengesanan Webshell AI bagi Anjing Keselamatan Laman Web untuk mengimbas direktori aplikasi web Tomcat Ia boleh didapati bahawa fail itu bernama "/admin/login .jsp" diiktiraf sebagai Webshell (Penggodam penamaan Webshell ini agak mengelirukan), seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Selepas pengesahan manual selanjutnya, boleh ditentukan bahawa fail jsp sememangnya Webshell. Dan ia berkaitan dengan penggunaan automatik fail admin.war, seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Jadi bagaimana pakej perang ini dimuat naik ke pelayan? Teruskan menganalisis fail log, fokus pada "antara muka yang mungkin fungsi muat naik fail" semasa analisis. Ia boleh ditentukan secara awal bahawa penggodam menggunakan fungsi Muat naik ZIP dan Penyahmampatan ZIP sebelum menggunakan cangkerang web ini, seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Cari fail test5.zip yang dipanggil oleh antara muka penyahmampatan fail pada pelayan Selepas menganalisisnya, anda boleh mendapati bahawa laluan di mana admin.war terletak ialah "test5 .zip... ... ". Oleh itu, fail ZIP ialah fail berniat jahat yang dibina dengan teliti oleh penggodam Ia akan menjadikan laluan penyahmampatan pakej perang bukan lagi direktori "/uploads/1" lalai, tetapi direktori "webapps" Tomcat, seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Nota: Cara menjana fail zip berniat jahat dalam artikel ini

(1) Jalankan skrip python berikut untuk menjana test5.zip:

import zipfile if __name__ == "__main__": try:binary = b'<script>alert("helloworld")</script>'zipFile = zipfile.ZipFile("test5.zip", "a", zipfile.ZIP_DEFLATED) info = zipfile.ZipInfo("test5.zip")zipFile.writestr("../../../safedog.html", binary)zipFile.close()except IOError as e: raise e
Salin selepas log masuk

(2) Seret pakej perang yang mengandungi Webshell ke "test5.zip", seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

2. Audit Kod

Selepas analisis kebolehkesanan pencerobohan sebelum ini, boleh disimpulkan secara awal bahawa serangan ini berkaitan dengan "ZIP" antara muka Penyahmampatan CMS" (GET /cmscp/core/web_file_2/unzip.do?ids={ids}&parentId={parentId}) berkait rapat. Antara muka ini sepadan dengan kaedah unzip WebFileUploadsController.java, seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Ikuti kaedah unzip dan dapatkan pelaksanaan khususnya dalam WebFileControllerAbstractor.java. Ia boleh didapati bahawa apabila menyahmampat fail zip, kaedah unzip kelas AntZipUtil dipanggil, seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Menyusul kaedah unzip kelas AntZipUtil, boleh didapati bahawakaedah ini tidak melakukan pengesahan parameter pada nama fail dalam pakej termampat ZIP, kemudian tulis fail . Penulisan kod sedemikian akan menyebabkan kelemahan traversal direktori, seperti yang ditunjukkan dalam rajah.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Pada masa ini, Haiqing Lab telah menyerahkan kerentanan kepada CNVD dan memaklumkan pengilang untuk membetulkannya.

3. Ringkasan

Melalui contoh ini, boleh didapati bahawa keselamatan fungsi penyahmampatan boleh menyebabkan kemudaratan besar kepada keselamatan tapak web (mengambil komponen pembangunan Spring Integrasi Zip sebagai contoh, ia juga "Kerentanan penyahmampatan tidak selamat" CVE-2018-1261 telah terdedah). Jika perniagaan tapak web melibatkan fungsi penyahmampatan, adalah disyorkan untuk memberi perhatian lebih kepada dimensi pembangunan keselamatan Selain itu, Safe Dog juga menyediakan penyelesaian pertahanan produk yang sepadan.

Dari segi pembangunan keselamatan, adalah disyorkan agar pembangun menjalankan pemeriksaan sendiri dan sekatan dari aspek berikut apabila melaksanakan algoritma penyahmampatan:

(1) Sama ada untuk mengehadkan bilangan daripada fail dalam pakej termampat Sambungan

Contohnya: .war, .jsp, jspx, .jsp::$DATA (hanya memberi kesan kepada hos Windows)

(2) Sama ada untuk mengehadkan yang sebenar laluan penyahmampatan fail dalam pakej termampat

(3) Sama ada untuk mengehadkan jumlah saiz fail dalam pakej termampat (untuk mengelakkan serangan penafian perkhidmatan yang disebabkan oleh pakej termampat)

(4 ) Sama ada untuk memberikan kebenaran yang munasabah kepada direktori aplikasi web

Selain itu, kami juga mengesyorkan agar pengguna memilih produk keselamatan yang boleh dipercayai dan profesional Sebagai contoh, pengguna yang telah memasang produk anjing keselamatan akan menerima teks penggera secara automatik mesej daripada sistem sebaik sahaja insiden keselamatan berlaku, supaya mereka boleh campur tangan secepat mungkin untuk mengelakkan kerugian yang lebih besar.

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Dari segi "Pertahanan Produk Anjing Keselamatan", adalah disyorkan agar pengguna menggunakan perlindungan latar belakang tapak web "Anjing Keselamatan Laman Web" dan "Yunyu" juga sebagai direktori fail anjing pelayan Fungsi perlindungan, fungsi perlindungan laluan latar belakang halaman web Yunyu dan Anjing Keselamatan Laman Web boleh melindungi daripada tingkah laku kekerasan latar belakang laman web.

Fungsi perlindungan latar belakang Yunyu adalah seperti yang ditunjukkan dalam gambar:

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Fungsi perlindungan latar belakang Anjing Keselamatan Laman Web adalah seperti yang ditunjukkan dalam gambar:

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan

Fungsi pengawal direktori folder pelayan:

Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan


Atas ialah kandungan terperinci Analisis kejadian GetShell penyahmampatan yang tidak selamat ditemui melalui kebolehkesanan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan