Pengujian Penetrasi Python - XSS Web Attack
Serangan skrip lintas situs adalah jenis injeksi yang juga merujuk ke serangan injeksi kode sisi klien. Di sini, kode berbahaya disuntikkan ke situs web yang sah. Konsep Same Origin Policy (SOP) sangat berguna dalam memahami konsep Cross-site scripting. SOP adalah prinsip keamanan terpenting di setiap browser web. Ini melarang situs web mengambil konten dari halaman dengan asal lain. Misalnya, halaman web www.tutorialspoint.com/index.html dapat mengakses konten dariwww.tutorialspoint.com/contact.htmltetapi www.virus.com/index.html tidak dapat mengakses konten dariwww.tutorialspoint.com/contact.html. Dengan cara ini, kami dapat mengatakan bahwa skrip lintas situs adalah cara melewati kebijakan keamanan SOP.
Jenis Serangan XSS
Di bagian ini, mari kita pelajari tentang berbagai jenis serangan XSS. Serangan tersebut dapat diklasifikasikan ke dalam kategori utama berikut -
- XSS yang persisten atau disimpan
- XSS non-persisten atau tercermin
XSS yang persisten atau disimpan
Dalam serangan XSS semacam ini, penyerang menyuntikkan skrip, disebut sebagai muatan, yang disimpan secara permanen di aplikasi web target, misalnya dalam database. Inilah alasannya, ini disebut serangan XSS persisten. Ini sebenarnya adalah jenis serangan XSS yang paling merusak. Misalnya, kode berbahaya disisipkan oleh penyerang di kolom komentar di blog atau di postingan forum.
XSS non-persisten atau tercermin
Ini adalah jenis serangan XSS yang paling umum di mana muatan penyerang harus menjadi bagian dari permintaan, yang dikirim ke server web dan direfleksikan, kembali sedemikian rupa sehingga tanggapan HTTP menyertakan muatan dari permintaan HTTP. Ini adalah serangan yang tidak terus-menerus karena penyerang perlu mengirimkan muatan ke setiap korban. Contoh paling umum dari jenis serangan XSS tersebut adalah email phishing dengan bantuan penyerang yang menarik korban untuk membuat permintaan ke server yang berisi muatan XSS dan akhirnya mengeksekusi skrip yang direfleksikan dan dieksekusi di dalam browser. .
Contoh
Sama seperti SQLi, serangan web XSS dapat diimplementasikan dengan memanipulasi data masukan ke aplikasi. Dalam contoh berikut, kami memodifikasi vektor serangan SQLi, yang dilakukan di bagian sebelumnya, untuk menguji serangan web XSS. Skrip Python yang diberikan di bawah ini membantu menganalisis serangan XSS menggunakanmechanize -
Untuk memulai, mari kita impor mechanize modul.
import mechanize
Sekarang, berikan nama URL untuk mendapatkan respon setelah mengirimkan formulir.
url = input("Enter the full url")
attack_no = 1
Kita perlu membaca vektor serangan dari file.
With open (‘vectors_XSS.txt’) as x:
Sekarang kita akan mengirim permintaan dengan setiap vektor arrack -
For line in x:
browser.open(url)
browser.select_form(nr = 0)
browser[“id”] = line
res = browser.submit()
content = res.read()
Baris kode berikut akan memeriksa vektor serangan yang dicetak.
if content.find(line) > 0:
print(“Possible XSS”)
Baris kode berikut akan menulis respon ke file output.
output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1
XSS terjadi ketika input pengguna mencetak respons tanpa validasi apa pun. Oleh karena itu, untuk memeriksa kemungkinan serangan XSS, kami dapat memeriksa teks respons untuk vektor serangan yang kami sediakan. Jika vektor serangan hadir dalam respons tanpa jalan keluar atau validasi apa pun, ada kemungkinan besar serangan XSS.