Memahami dan mencari kerentanan Pengalihan Terbuka

Terjemahan artikel disiapkan untuk mengantisipasi dimulainya kursus "Keamanan Aplikasi Web" .








Salah satu kerentanan yang paling umum namun terabaikan oleh pengembang web adalah Pengalihan Terbuka (juga dikenal sebagai "Pengalihan dan Penerusan Tidak Diverifikasi"). Sebuah situs web dianggap rentan terhadap Pengalihan Terbuka jika nilai parameter (bagian dari URL setelah "?") Dalam permintaan HTTP GET mengarahkan pengguna ke situs baru tanpa memverifikasi situs target. Bergantung pada arsitektur situs yang rentan, pengalihan dapat terjadi setelah tindakan tertentu, seperti masuk, dan terkadang dapat terjadi secara instan saat pemuatan halaman.



Contoh tautan yang rentan terlihat seperti ini: www.example.com/login.html?RelayState=http%3A%2F%2Fexample.com%2Fnext



Dalam contoh ini, parameter "RelayState" menentukan tempat untuk mengarahkan pengguna setelah login berhasil (di contohnya adalah example.com/next ). Jika situs tidak memeriksa nilai parameter "RelayState" untuk legitimasi dan keamanan, penyerang dapat menggunakan parameter ini untuk mengarahkan korban ke halaman palsu yang dibuat oleh penyerang sendiri: www.example.com/login.html?RelayState=http%3A%2F % 2FEvilWebsite.com



Kerentanan seperti Open Redirect telah diabaikan oleh pengembang, karena mereka tidak secara langsung merusak situs dan tidak memberikan penyerang kemampuan untuk mencuri data perusahaan secara langsung. Namun, ini tidak berarti Open Redirect bukan ancaman. Salah satu kegunaan utama dari jenis serangan ini adalah untuk melakukan serangan phishing yang efektif dan andal.



Saat serangan phishing menggunakan Open Redirect, korban mungkin menerima email yang tampak masuk akal dengan tautan yang mengarah ke domain yang benar dan akrab bagi korban. Yang mungkin tidak diperhatikan oleh korban adalah ada parameter di tengah URL yang mengubah titik akhir pengalihan. Untuk memperumit deteksi Open Redirect, pengalihan dapat terjadi setelah korban memasukkan nama pengguna dan kata sandi di situs asli. Para penyerang menemukan bahwa cara efektif untuk mengelabui korban adalah dengan mengarahkan mereka ke situs palsu setelah memasukkan nama pengguna dan kata sandi mereka di situs asli. Situs palsu tersebut akan terlihat mirip dengan situs asli dan akan meminta korban untuk memasukkan kembali kata sandinya. Setelah korban melakukan ini, kata sandi akan ditulis oleh penyerang,dan korban akan diarahkan kembali ke situs aslinya. Jika semuanya dilakukan dengan benar, korban akan mengira bahwa mereka melakukan kesalahan dengan kata sandi pertama kali dan tidak akan menyadari bahwa nama pengguna dan kata sandi mereka telah dicuri.



Phishing digunakan dalam sebagian besar peretasan tertarget yang berhasil, serta secara teratur dalam serangan oportunistik. Mempertimbangkan seberapa umum phishing dalam kehidupan sehari-hari, kerentanan seperti Open Redirect juga tidak boleh disingkirkan.



Tidak adil untuk memilih situs atau perusahaan tertentu sebagai rentan terhadap Pengalihan Terbuka, karena kerentanan ini umum terjadi. Sebaliknya, akan sangat membantu untuk menunjukkan berapa banyak situs seperti itu dan betapa mudahnya menemukannya.



Melakukan penelusuran web adalah salah satu cara terbaik untuk menemukan Pengalihan Terbuka di situs Anda sendiri dan di tempat lain di internet pada umumnya.



Mesin pencari Google memberi Anda fleksibilitas untuk menulis kueri penelusuran, termasuk kueri yang secara khusus mencari URL halaman.



Operator dan karakter khusus berikut akan memungkinkan setiap pengguna untuk membuat kueri bertanda yang dapat membantu mendeteksi Open Redirect:



  • allinurlAdalah operator yang memberitahu Google untuk mencari URL untuk semua kata kunci yang ditentukan. Misalnya: ini allinurl:ReturnUrlakan mencari semua halaman web yang memiliki bagian ReturnUrl di alamatnya.
  • site- operator yang mengatakan untuk hanya mengembalikan hasil yang ada di domain atau situs web tertentu. Contoh: site:example.commencari halaman web dengan example.com.
  • "" - Tanda kutip ganda adalah karakter khusus yang digunakan untuk menunjukkan pencarian kombinasi kata dan karakter yang tepat di dalam tanda kutip.
  • * - asterisk adalah karakter wildcard yang mewakili satu atau lebih kata.


Penggunaannya memungkinkan kita menemukan tanda-tanda potensi Pengalihan Terbuka: kita dapat secara bersamaan mencari keberadaan token "http" dan "https" dalam parameter permintaan GET. Misalnya:



allinurl:%3Dhttps*
allinurl:%253Dhttps*
allinurl:%3Dhttp*
allinurl:%253Dhttp*


Kami juga dapat mencari kata-kata umum tertentu yang terkait dengan pengalihan di area parameter permintaan GET. Misalnya:



allinurl:"<keyword>=https"
allinurl:"<keyword>=http"
allinurl:<keyword>=https
allinurl:<keyword>=http
allinurl:<keyword>%3Dhttps
allinurl:<keyword>%3Dhttps*
allinurl:<keyword>%253Dhttps
allinurl:<keyword>%253Dhttps*
allinurl:<keyword>%3Dhttp
allinurl:<keyword>%3Dhttp*
allinurl:<keyword>%253Dhttp
allinurl:<keyword>%253Dhttp*
allinurl:<keyword>


Sebagai gantinya <keyword>, kita akan menggunakan salah satu kata pengalihan berikut: RelayState, ReturnUrl, RedirectUri, Return, Return_url, Redirect, Redirect_uri, Redirect_url, RedirectUrl, Forward, Forward_url, SuccessUrl, Redir, Exit_url, Tujuan . Ini bukan daftar lengkap kata kunci. Anda dapat menemukan lebih banyak dengan menganalisis hasil kueri pencarian URL yang lebih umum di bagian GET Request Parameters.



Untuk pencarian bertarget, Anda dapat menambahkannya «site:<domain_name>»di akhir pencarian Google Anda. Metode ini dapat membantu Anda menemukan kerentanan Open Redirect di situs Anda sendiri.



Dengan pencarian sederhana seperti itu, Anda dapat menemukan lusinan kerentanan Open Redirect dalam beberapa menit. Daftar situs yang rentan mencakup situs bank, perusahaan internasional, perusahaan tepercaya, proyek favorit, dan banyak situs organisasi kecil. Sebagai bonus tambahan, setiap kali perayap Google menemukan situs dari Pengalihan Terbuka, kami akan menerima hasil yang diperbarui menggunakan kueri.



Cara terbaik untuk menghindari kerentanan Pengalihan Terbuka adalah dengan menghindari pengalihan parameter khusus pengguna atau permintaan GET. Jika pengalihan tidak dapat dihindari, Anda dapat menanganinya dengan memvalidasi situs target dan membersihkan reputasinya dengan daftar putih URL yang divalidasi.



Saya akan mendorong Anda untuk memberi tahu teman pengembang web Anda tentang Pengalihan Terbuka. Anda dapat meneruskan artikel ini kepada mereka atau bahkan menemukan kerentanan menggunakan metode yang disebutkan di atas dan melaporkannya ke perusahaan dengan penjelasan rinci tentang masalahnya. Mari bersama-sama mempersulit serangan phishing!



Jika Anda ingin membagikan pencarian Google Anda yang berfungsi untuk deteksi Open Redirect, Anda dapat melakukannya di komentar.






Pelajari lebih lanjut tentang kursus tersebut







All Articles