Sabtu, 06 Juli 2019

Clickjacking vulnerability pada salah satu web ecommerce terbesar di Indonesia

Halo.
Terinspirasi dari seorang teman, dan kebetulan karena sedang tidak ada kerjaan, saya memutuskan untuk melakukan pentest salah satu online marketplace di Indonesia.

Awalnya ketertarikan saya adalah melakukan reverse engineering aplikasi Android yang mereka miliki. Namun mungkin karena waktu itu sudah bosan sekali melihat koding Android (2 hari sebelumnya saya lembur mengerjakan suatu aplikasi Android), saya memutuskan untuk melakukan pentest pada halaman web utama saja.

Sebenarnya memang saat itu saya sedang tertarik dan memang berniat mencari celah clickjacking untuk belajar, karena kawan saya bercerita ada seseorang yang pernah menemukan bug Clickjacking di Google payment. Hanya dengan melakukan hijack satu click saja, attacker bisa melakukan transfer seluruh saldo Google wallet dari korban ke penyerang tanpa disadari. Bug tersebut ditutup dengan bounty sebesar $71.337, dan yang membuat saya heran, clickjacking tidak masuk dalam top ten OWASP.

Mungkin karena mitigasinya yang cukup mudah, dan celah ini biasanya hanya terjadi ketika developer lupa mengatur X-Frame-Options. Pada dasarnya, clickjacking terjadi ketika attacker melakukan load halaman korban menggunakan iframe, kemudian menutupinya menggunakan CSS dll. Lalu menampilkan halaman lain sebagai umpan, yang pada akhirnya dikirim kepada user.

Ketika user melakukan klik pada halaman tersebut, tanpa disadari dia sebenarnya melakukan klik juga pada halaman korban yang pada akhirnya melakukan sensitive action dengan previlege user tersebut. Contohnya ya seperti melakukan transfer saldo google wallet, dsb. 

Sebenarnya ini bisa dicegah dengan menambahkan X-frame-options, contohnya agar halaman web tidak bisa diload didalam iframe kecuali melalui domain yang sama, atau agar halaman tersebut sama sekali tidak bisa diload didalam iframe, dsb.

Setelah melakukan testing clickjacking dimulai dari halaman-halaman sensitif seperti saldo/dompet pada marketplace tersebut, saya belum beruntung, karena memang halaman-halaman sensitif seperti dompet tentunya menjadi prioritas utama dalam mitigasi clickjacking.

Sampai akhirnya saya sampai pada subdomain manajemen toko milik user, dan voila! Ternyata seluruh halaman dalam subdomain tersebut bisa diload dalam iframe, alias vulnerable terhadap clickjacking.

Saya kemudian mencari aksi paling sensitif yang bisa dilakukan pada subdomain tersebut, beberapa yang saya dapatkan adalah:

1. Mengganti identitas toko (kontak, alamat, dll.)
2. Menambahkan rekening bank
3. Menutup toko

Setelah membandingkan jumlah aksi yang dibutuhkan dan impact yang diberikan, saya memutuskan membuat PoC untuk menutup toko saja, karena hanya membutuhkan aksi sedikit (2-3 klik) dan dampaknya menurut saya cukup signifikan. Contohnya adalah penyerang bisa memanfaatkan bug ini untuk menutup toko-toko saingannya, untuk kepentingan pribadi seperti menaikkan eksistensi tokonya sendiri, dsb.

Untuk membuat PoC, saya menggunakan tool dari BurpSuite yaitu ClickBandit, cukup memasukkan command di console browser, kita bisa merecord aktivitas apa yang ingin di clickjacking.

Setelah membuat PoC halaman HTML dan saya coba, ternyata memang terbukti celah tersebut bisa dimanfaatkan. 

Sebenarnya sampai disini saya sudah cukup puas karena telah belajar ilmu baru, dan memutuskan untuk tidak melaporkannya karena menurut saya impact nya tidak terlalu besar, karena severity clickjacking sangat bergantung pada impact yang diberikan.

Namun setelah bercerita kepada kawan saya, saya malah dimarahi :v katanya lebih baik dilaporkan saja, urusan itu valid bug atau bukan biar mereka yang menentukan. Akhirnya dengan itikad baik agar web ecommerce tersebut bisa lebih secure lagi, saya akhirnya melaporkan bug tersebut melalui email team security, lengkap dengan PoC yang telah saya buat.

Gambar menyusul.

Timeline :
5 Juli 2019 - Bug dilaporkan


Clickjacking vulnerability pada salah satu web ecommerce terbesar di Indonesia
4/ 5
Oleh