Apa itu Cross Site Scripting (XSS) ?

https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

Requirements:

  * Dasar PHP
  * Dasar Javascript
  * Many Try, Much Error

Belajar JS : https://www.tutorialspoint.com/javascript/index.htm

Belajar PHP : https://www.tutorialspoint.com/php/index.htm

Vulnerability

XSS Merupakan salah satu vuln yang masih sering ditemukan pada aplikasi web. Tujuannya ialah menyisipkan sebuah payload (malicious code) yang dapat dieksekusi oleh browser (client). Sehingga dalam kasus tersebut, target kita adalah pada client side (Tidak memengaruhi server).

Macam-macam vuln XSS:

  * Reflected XSS
  * Stored XSS
  * DOM Based XSS

Efek yang ditimbulkan:

  * Pencurian data client (cookie, session hijacking, dll)
  * Menggangu fungsionalitas website pada frontend
  * Merubah tampilan web secara total sehingga tidak dapat difungsikan (Deface)

Latihan: https://xss-game.appspot.com/

Objectives

Inject a script to pop up a JavaScript alert() in the frame below.

Once you show the alert you will be able to advance to the next level.

Kita memiliki misi untuk mengeluarkan javascript alert pada web tersebut, simpelnya ialah kita tinggal melakukan injeksi dengan memasukkan script js berikut

<script>alert(1);</script>

Setelah itu kita tekan tombol search.

Yay berhasil, mengapa bisa terjadi ?

Karena XSS mempengaruhi client (browser) sehingga kita bisa mengeksekusi script yang berjalan pada client (JS, CSS, HTML). Salah satu contoh ialah kita dapat merusak tampilan web (deface). Lanjut ke materi selanjutnya.

Silakan buka url berikut, lalu login dengan username bee dan password bug.

http://asgama.tk:5000/xss_stored_1.php

Ayo coba kita injeksi dengan javascript

<script>alert(“hacked by hacker”);</script>

Lalu kita tekan tombol submit.

Yay, akhirnya kita bisa mengeksekusi kode javascript tersebut.

Setelah itu, coba kita reload ulang halaman web tersebut, maka efeknya pun masih sama yang artinya script yang kita inputkan tadi tersimpan pada database dan akan selalu ditampilkan pada halaman web tersebut saat dibuka. Sehingga kita sebut itu sebagai Stored XSS dan efeknya pun bukan hanya kita sendiri, namun bisa dirasakan oleh user lain yang membuka web tersebut.

Hardening

Untuk bahasa pemrograman PHP, cukup dengan menggunakan fungsi

htmlentities($string, ENT_QUOTES | ENT_HTML5, 'UTF-8')

Contoh:

<?php

	$input = $_GET[“nama”];

	echo htmlentities($input, ENT_QUOTES | ENT_HTML5, 'UTF-8');

?>