Clickjacking

Andrew Salim
MII Cyber Security Consulting Services
3 min readSep 28, 2020
Image from netsparker.com

Ketika melakukan vulnerability scanning terhadap sebuah website menggunakan burpsuite, saya sering melihat kerentanan “Frameable response (potential clickjacking)”, namun hanya berupa info dan tidak memiliki tingkat severity. Sehingga saya mencoba untuk mencari penjelasan tentang kerentanan ini, dan berikut ini rangkuman mengenai clickjacking yang saya baca di beberapa website. Selamat membaca :)

Definisi

Clickjacking merupakan sebuah teknik yang digunakan untuk menipu pengguna agar menekan tombol dengan tujuan berbeda dari apa yang pengguna lihat. (Wikipedia)

Clickjacking umumnya dilakukan dengan cara menyembunyikan tombol asli, dan menampilkan tombol palsu yang menarik, sehingga pengguna akan menekan tombol tersebut. Namun ketika tombol palsu ditekan, fungsi pada tombol asli akan dijalankan.

Mirip dengan CSRF (Cross Site Request Forgery), clickjacking dapat dilakukan ketika user sedang terautentikasi ke web target. Namun clickjacking dan CSRF cukup berbeda, CSRF dilakukan dengan membuat form palsu yang memiliki value sesuai dengan yang diingankan oleh attacker, dan menipu pengguna untuk melakukan submit terhadap form tersebut. Pada Clickjacking menggunakan website asli, namun tampilan dari website tersebut disembunyikan (ditimpa).

Contoh

Contoh ini saya ambil dari website portswigger, yang memiliki lab untuk membahas kerentanan clickjacking. Pada lab ini, terdapat kerentanan clickjacking yang memungkinkan attacker untuk menipu user agar menghapus akunnya.

Halaman account asli

Pada halaman profile user, terlihat adanya tombol “Delete account” yang dimana ketika tombol tersebut di klik, maka akun akan terhapus. Sehingga untuk dapat melakukan clickjacking, kita perlu membuat sebuah tombol palsu diatas tombol “Delete account”. Berikut ini contoh kode html yang saya gunakan.

<style> 
#frame{
width: $width;
height: $height;
position: absolute;
opacity: 0;
z-index: 2;
}
#btn{
position:absolute;
z-index: 1;
left: $left;
top: $top;
}
</style>
<iframe id="frame" src="$target"></iframe>
<button id="btn">FANCY BUTTON</button>

Pada kode html tersebut, terdapat sebuah iframe yang memenuhi layar website, dan terdapat sebuah tombol dibelakang iframe. Urutan posisi depan — belakang dapat dilihat dari value z-index, semakin besar z-index maka akan semakin depan. Agar button dapat terlihat dan iframe tidak terlihat, maka iframe harus dibuat transparan. Agar contoh dapat terlihat, maka iframe saya buat opacity menjadi 0.05.

Halaman account palsu

Ketika pengguna menekan tombol “FANCY BUTTON” maka tombol “Delete Account” yang seharusnya berada didepan akan dijalankan, sehingga akun pengguna akan dihapus.

Remediation

Untuk menutupi celah ini, dapat dilakukan dengan menggunakan header X-FRAME-OPTIONS: deny atau X-FRAME-OPTIONS: sameorigin, sehingga browser akan menolak iframe berbahaya yang menuju website tersebut

--

--