Kerentanan muat naik fail berlaku dalam aplikasi dengan fungsi muat naik Jika aplikasi tidak mempunyai kawalan ke atas fail yang dimuat naik pengguna atau mempunyai kecacatan, penyerang boleh mengeksploitasi kecacatan dalam fungsi muat naik aplikasi untuk memuat naik Trojan , virus. dan fail lain yang berbahaya kepada pelayan dan mengawal pelayan.
Sebab utama kerentanan muat naik fail ialah: terdapat fungsi muat naik dalam aplikasi, tetapi fail yang dimuat naik belum menjalani ujian kesahihan yang ketat atau ujian fungsi rosak, mengakibatkan Muat naik fail Trojan ke pelayan. Kerentanan muat naik fail amat berbahaya kerana kod hasad boleh dimuat naik terus ke pelayan, yang boleh menyebabkan akibat yang serius seperti mengganggu halaman web pelayan, menggantung tapak web, mengawal pelayan dari jauh dan memasang pintu belakang.
Di sini kita membincangkan beberapa kaedah pengesahan dan pintasan untuk muat naik fail:
Kerentanan muat naik pintasan penapisan JS bahagian hadapan adalah disebabkan. ke aplikasi Program ini disahkan melalui kod JS di hujung hadapan, bukannya di hujung belakang program Dengan cara ini, anda boleh memintas penapisan muat naik dan memuat naik Trojan dengan mengubah suai kod JS bahagian hadapan.
Jadi bagaimana untuk menilai sama ada ia adalah pengesahan bahagian hadapan? Saya secara peribadi fikir kita boleh menyemak sama ada kita boleh mendapatkan paket data semasa memuat naik dan menangkap paket, sama ada terdapat data yang mengalir, atau kita boleh menyemak sama ada halaman imej yang dimuat naik akan memaparkan alamat imej yang dimuat naik, dsb.
Pintas: Padamkan kod penapisan, ubah suai atau lumpuhkan Javascript.
Pengesahan biasa untuk muat naik fail: nama akhiran (pengesahan langsung), fail, pengepala fail (pengesahan tidak langsung).
2.1.1 Senarai Hitam (akhiran format skrip yang secara jelas tidak dibenarkan untuk dimuat naik)
Kerentanan pintasan penapisan nama fail adalah terutamanya Kerana jenis muat naik fail ditentukan melalui senarai hitam, dan tiada penapisan lengkap, penyerang boleh memuat naik fail di luar jenis senarai hitam.
Kaedah penghakiman senarai hitam: Muat naik fail, sistem menggesa bahawa memuat naik fail format xxx tidak dibenarkan.
Pintas: Gunakan format lain (php5, Phtml, php3) atau kes fail, dan anda juga boleh menambah beberapa simbol gangguan untuk mencapai pintasan.
2.1.2 .htaccess (protokol pseudo-statik) - analisis tulis semula (hanya tersedia dalam Apache dan dayakan modul pseudo-statik)
. muat naik fail htaccess ialah dilakukan menggunakan .htaccess Fail boleh mengkonfigurasi fungsi pelayan Web untuk merealisasikan proses menghuraikan fail dengan akhiran seperti jpg dan png sebagai fail PHP.
fail.htaccess (fail konfigurasi yang diedarkan) menyediakan cara untuk membuat perubahan konfigurasi berdasarkan setiap direktori Satu fail yang mengandungi satu atau lebih arahan konfigurasi diletakkan dalam direktori dokumen tertentu, dan arahan tersebut digunakan untuk direktori ini dan semua subdirektorinya. .htaccess ialah fail konfigurasi pelayan web Anda boleh menggunakan fail .htaccess untuk melaksanakan konfigurasi seperti kaedah penghuraian dan pengalihan semula fail definisi dalam pelayan web.
Kaedah pintasan: Mula-mula muat naik fail 1.htaccess. 2. Muat naik semula gambar tersebut.
2.1.3 Pintasan ruang
Kaedah pintasan: Tambahkan ruang selepas nama akhiran fail dalam paket data untuk mencapai pintasan.
2.1.4. Bypass
Kaedah pintasan: Sama seperti kaedah pintasan ruang, tambahkan nama akhiran fail dalam paket data untuk mencapai pintasan.
2.1.5::$data Bypass
Ini adalah protokol yang unik untuk windows, jika nama fail + "::$DATA" Data selepas ::$DATA akan dianggap sebagai aliran fail, dan nama akhiran tidak akan dikesan, dan nama fail sebelum ::$DATA akan dikekalkan Tujuannya bukan untuk menyemak nama akhiran.
2.1.6 Penapisan gelung
Pintas: Kod menggantikan php dalam rentetan tanpa apa-apa.
Contohnya: a.pphphp akan menjadi ->a.
2.1.7 Senarai Putih: Tentukan dengan jelas imbuhan format yang boleh dimuat naik (lebih selamat)
%00 pemotongan, 0x00 pemangkasan (berdasarkan prinsip alamat, pemangkasan data di belakang fail) 00 pemotongan pintasan hanya boleh memintas pengesahan bahagian hadapan.
Sebab utama pemangkasan ialah kehadiran aksara %00 Apabila PHP
Kaedah pintasan (path%00 truncation):
Fail yang berbeza mempunyai format pengepala fail tertentu dan pembangun memuat naik fail dengan menyemak Fail pengepala mengesan jenis fail, tetapi kaedah pengesanan ini juga boleh dipintas Selagi pengepala fail yang sepadan ditambahkan pada pengepala fail Trojan, ini boleh memintas pengesanan tanpa menjejaskan operasi biasa fail Trojan.
Pengepala fail biasa adalah seperti berikut:
JPEG 0xFFD8FF
PNG0 x89504E470D0A1A0A
GIF 47 49 4638 (GIF 47 49 4638) sekitar Kaedah:
Tukar maklumat pengepala untuk mencapai penipuan Contohnya, menambah pengepala fail fail imej pada fail pengepala kuda Trojan boleh memintas pengesanan.?>
Buat gambar kudaGunakan arahan cmd untuk menggabungkan gambar biasa 1.jpg dan fail a.txt yang mengandungi kuda Trojan satu ayat ke dalam fail Trojan test.php yang baharu.
arahan cmd: salin 1.jpg/b+a.txt test.php.
3.2 Pengesanan Jenis Kandungan
Pintas: Jenis Jenis Kandungan boleh diusik melalui penangkapan paket, supaya Jenis Kandungan paket data boleh diubah suai dengan menangkap paket untuk memintas pertimbangan Jenis Kandungan.
MIME: Anda boleh meneka nama akhiran fail dengan menilai jenis, dan menggunakan alat tangkapan paket untuk mengusik Jenis Kandungan, seperti menukarnya kepada imej/pjpeg, imej/jpeg, imej/gif , imej/png. Seseorang boleh memintas penapisan.
4. Kandungan dan lain-lain
Pintas: Selepas memuat naik fail ke pelayan, kami akan terus mengakses laluan fail Disebabkan keadaan bersaing, tujuan memuat naik WebShell akan dicapai Kerentanan itu dieksploitasi dengan menghantar permintaan dan memuat naik secara berterusan kandungan. Akses sedemikian akan Menjana fail Trojan baru dan kemudian menghantar permintaan lain untuk terus mengakses fail ini Jika eksploitasi keadaan perlumbaan berjaya, Trojan baharu akan dihasilkan.
4.2 Penamaan Direktori
5. Kerentanan lain
CVE-2017-12615
CVE-2015-5254
9-CVE-2015 2618
......
Terdapat tutorial tentang cara mengeksploitasi kelemahan ini dalam talian.
6. Kerentanan penghuraian Middleware
6.1.1 Laksanakan sebagai folder
Pintas: image.asp/aa.jpg aa.jpg akan dihuraikan sebagai asp.
6.1.2 Laksanakan sebagai fail
Pintas: image.asp;.jpg atau xxx.asp;xxx.jpg Fail ini akan dilaksanakan sebagai asp.
asp boleh ditukar kepada php Jika anda menukar php, ia boleh dilaksanakan sebagai php.
7. Pintasan WAF
7.1 Limpahan data (pengisian data sarap)
7.2 Mutasi simbol ('";)
Contohnya, x.jpg;.php Titik koma mewakili penghujung sekeping data.
Tambahkan %00 (ruang) selepas nama akhiran fail untuk dipotong, x.php%00.jpg.
Pemutus talian (serupa dengan n dalam program) adalah serupa dengan penghantaran data dalam blok, seperti:
Paket data sebenarnya mengenal pasti x.npnhnp.
adalah bersamaan dengan gelung rekursif dalam fungsi Prinsip menulis parameter berbilang kali dalam paket data adalah sangat serupa dengan data sampah.
Atas ialah kandungan terperinci Perbincangan ringkas tentang kaedah memuat naik fail untuk mendapatkan kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!