Print Jadi Solusi Saat Alert Tidak Aktif
Skrip lintas situs dan fungsi alert() telah bekerja bersama selama beberapa dekade. Ingin membuktikan bahwa Anda dapat menjalankan JavaScript apa pun? Munculkan alert. Ingin menemukan kerentanan XSS dengan cara yang malas? Sisipkan alert() - Panggil payload ke mana-mana untuk melihat apakah ada yang muncul.
Namun, ada masalah yang muncul di cakrawala. Iklan berbahaya memanfaatkan lansiran kesayangan kami untuk mengalihkan perhatian pengunjung dan insinyur sosial dari dalam iframe. Google Chrome telah memutuskan untuk mengatasi ini dengan menonaktifkan alert iframe lintas domain. Iframe lintas domain sering kali sengaja disematkan di situs web dan juga merupakan komponen yang hampir esensial dari serangan XSS tertentu yang relatif maju.
Saat Chrome 92 dirilis pada 20 Juli 2021, kerentanan XSS di iframe lintas domain adalah sebagai berikut:
- PoC berbasis alert tidak lagi diaktifkan.
- Jadikan itu tidak terlihat oleh siapa pun menggunakan teknologi deteksi berbasis alert.
Apa berikutnya? Solusi yang jelas adalah menggunakan prompt atau konfirmasi, tetapi sayangnya mitigasi Chrome memblokir semua dialog. Gaya OAST, yang memicu DNS pingback ke listener, adalah pendekatan potensial lainnya, tetapi karena persyaratan konfigurasi, gaya ini tidak cocok untuk PoC. Saya juga mengecualikan console.log() karena fungsi konsol sering diproksi atau dinonaktifkan oleh alat kebingungan JavaScript.
Sangat menarik bahwa "perlindungan" terhadap dialog lintas-domain ini menampilkan alert dan perintah pemblokiran, tetapi seperti yang ditunjukkan Yosuke Hasegawa, saya lupa otentikasi dasar. Ini berfungsi dengan versi kenari saat ini. Namun, itu mungkin diblokir di masa depan.
Kami membutuhkan alternatif alert seperti:
- Sederhana, bebas penyiapan, dan mudah diingat
- Visibilitas tinggi bahkan ketika dijalankan dengan iframe tersembunyi
Setelah berminggu-minggu melakukan penelitian mendalam, kami dengan senang hati memberikan Anda ...
print()
Segera, Lembar contekan XSS juga diperbarui untuk mencerminkan muatan print() baru saat menggunakan iframe lintas domain. Jika iframe tidak disertakan, terus gunakan alert untuk saat ini.