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.
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.
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.
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.
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.
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
(2) Seret pakej perang yang mengandungi Webshell ke "test5.zip", seperti yang ditunjukkan dalam rajah.
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.
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.
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.
Pada masa ini, Haiqing Lab telah menyerahkan kerentanan kepada CNVD dan memaklumkan pengilang untuk membetulkannya.
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.
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:
Fungsi perlindungan latar belakang Anjing Keselamatan Laman Web adalah seperti yang ditunjukkan dalam gambar:
Fungsi pengawal direktori folder pelayan:
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!