Cara menggunakan htmlentities xss

XSS adalah suatu cara memasukan code/script HTML kedalam suatu web site dan dijalankan melalui browser di client (echo.or.id).

Show

Kepanjangan XSS adalah Cross Site Scripting, lho kenapa Cross disingkat jadi X?, jawabannya adalah karena singkatan CSS sudah dipakai oleh Cascading Style Sheet.

Search engine yang saya maksudkan bukanlah Google, Yahoo, dll, tapi search engine buatan sendiri yang biasa digunakan untuk mencari informasi pada suatu website.

Cara mengetahui adanya bugs ini adalah dengan memasukkan tag HTML ke search box, misalnya

Test

.
Jika hasil pencarian berubah menjadi heading level 1 (huruf menjadi besar) berarti ada bugs XSS pada web tersebut.

Cara Pencegahan

Bugs ini terjadi karena kesalahan programmer yang tidak melakukan filter terhadap apa yang diketikkan user saat menasukkan input.

Akibatnya user bisa dengan mudah menyisipkan berbagai kode ke search box tersebut. Ternyata tidak tag HTML saja yang bisa disisipkan ke search box, Javascript dan Client Side Programming lainnya pun bisa apabila browser memang mendukung.

Cara mencegahnya adalah dengan menghapus atau mengganti tag HTML yang di inputkan oleh user.

Filter Menggunakan PHP

PHP mempunyai beberapa fungsi yang bermanfaat untuk men-filter input dari user.
Contohnya strip_tags() dan htmlentities() .

Kedua fungsi terstbu mempunyai kegunaan yang berbeda, strip_tags() berfungsi untuk menghapus tag HTML sedangkan htmlentities() untuk mengganti tag HTML dengan HTML Entities.

Berikut ini contoh source codenya

Test';

echo 'Filter menggunakan strip_tags() : ';
echo strip_tags($str);
echo '

'; echo 'Filter menggunakan htmlentities() : '; echo htmlentities($str); ?>

Output dari kode diatas

Filter menggunakan strip_tags() : Test

Filter menggunakan htmlentities() :

Test

Bisa dilihat dari output diatas bahwa fungsi strip_tags() digunakan untuk menghilangkan tag HTML dan htmlentities() digunakan untuk mengganti tag HTML menjadi HTML Entities.

Sebelum mempelajari teknik XSS ini sebaiknya anda mempelajari dasar teori tentang xss pada link berikut : https://miqbal.staff.telkomuniversity.ac.id/cross-site-scripting-xss/

Teknik ini merupakan bagian kedua dari keamanan web, sebelumnya telah membahas tentang sql injection dapat dilihat pada link berikut : https://miqbal.staff.telkomuniversity.ac.id/teknik-sql-injection/, sementara dasar teori dari web security dapat di klik pada berikut : https://miqbal.staff.telkomuniversity.ac.id/keamanan-web-web-security/

Prerequisite

Pada kesempatan kali ini dibuat skema database dengan menggunakan xampp dengan layanan yang dibutuhkan adalah apache server dan database mariaDB (MySQL).

Buat database dengan nama “xss“, dapat menggunakan terminal atau phpmyadmin.

Cara menggunakan htmlentities xss

Sebelum melakukan injeksi terlebih dahulu kita membuat database dummy, dengan cara mengunduh pada link berikut :

databasexss

File yang telah didownload kemudian di ekstrak dan diletakkan pada folder C:\xampp\htdocs , sehingga

Cara menggunakan htmlentities xss

Sementara untuk mengkoneksikan antara php dengan dengan mysql dapat menggunakan perintah mysqli_connect. Jika masih belum sesuai dapat dikustomisasi sesuai keinginan termasuk user dan pass yang masih default dari MySQL nya. Filenya berada di koneksi.php

Cara menggunakan htmlentities xss

Import Database

Agar tidak membuat program dari awal, kami sertakan file untuk mempermudah proses pembelajaran. Didalam folder xss yang telah diberikan, import file db.sql pada phpmyadmin

Cara menggunakan htmlentities xss

Pastikan setelah di impor, ada keterangan sukses dan terdiri dari 3 tabel, yaitu guestbook, post dan user, dapat dilihat pada gambar dibawah

Cara menggunakan htmlentities xss

Jalankan webnya dengan subdomain xss, pada browser dapat dibuka link localhost/xss atau 127.0.0.1/xss. Pada tahap ini jika masih terdapat error kemungkinan terbesar adalah belum terhubungnya antara apache server dengan database.

Cara menggunakan htmlentities xss

Bagian ini hanya proses untuk membuat sistem server dan database saja, kemudian kita akan melakukan proses cross site scripting nya.

Iterasi 1

Masukkan inputan pada kolom posting

Cara menggunakan htmlentities xss

Hasil tidak tersedia karena memang tidak mengandung kata kamjar pada website tersebut.

Cara menggunakan htmlentities xss

Namun yang perlu diperhatikan adalah hasil pencarian kamjar, turut mempengaruhi hasil pada link pencariannya, sehingga dari sini kita dapat mencoba untuk mengetahui apakah sistem tersebut bermasalah atau tidaknya.

Reflected XSS

Lakukan modifikasi pada url dengan menambahkan garis miring/italic pada link pencariannya. ../xss/search.php?q=kamjar

Cara menggunakan htmlentities xss

Dengan penambahan tersebut, ternyata mempengaruhi hasil pencarian pada website, tulisan kamjar berubah menjadi garis miring

Kemudian berikan perintah alert pada link diatas dengan cara ../xss/search.php?q=kamjar

Cara menggunakan htmlentities xss

Pada hasil diatas terdapat pop up alert dengan keterangan 1234

Dengan adanya celah xss tersebut, sehingga memungkinkan untuk membuat form pengisian user yang bersifat dummy kepada orang lain, yang berisi username dan password pada link tersebut. Sehingga orang lain yang tidak paham akan memberikan informasi tersebut kepada kita.

../xss/search.php?q=kamjar
Please Enter Your Password : ="password">

Cara menggunakan htmlentities xss

Dari hasil diatas sebagai orang awam akan merasa bahwa link tersebut benar karena link berada pada web resmi, sehingga secara tidak sadar akan memasukkan password yang diminta, sementara password yang diberikan korban akan dikirimkan ke situs yang berbeda. Agar tidak curiga dapat menggunakan shorten link seperti bitly.

Teknik seperti ini disebut dengan reflected xss

Stored XSS

Selain menggunakan teknik reflected dapat juga menggunakan teknik stored xss, dengan memanfaatkan celah dari menu guestbook.

Cara menggunakan htmlentities xss

Pada celah yang sama, kita dapat memberikan fungsi alert pada kotak pesan.

Cara menggunakan htmlentities xss

Hasil

Cara menggunakan htmlentities xss

Dengan cara seperti ini, siapa saja orang lain yang masuk ke dalam Guestbooknya situs tersebut akan selalu mendapatkan alert yang sama. Dengan cara seperti ini kita dapat memanfaatkan juga untuk mendapatkan session/cookies dari seseorang, sehingga kita dapat masuk sebagai siapa saja bahkan admin itu sendiri.

Di halaman phpmyadmin, terlihat script yang telah kita berikan tadi.

Cara menggunakan htmlentities xss

Solusi

Dengan membuka file gb.php pada folder xss

Cara menggunakan htmlentities xss

dengan menambahkan htmlentities

Cara menggunakan htmlentities xss

Sehingga akan memberikan hasil sebagai berikut

Cara menggunakan htmlentities xss

Hasil yang diperoleh penyerang tidak lagi dapat menggunakan fungsi html editing lagi, yang keluar hanya plaintext biasa. 

Selamat mencoba dan semoga berhasil

Ref : [1][2]