dari tutorial yang diberikan ini, bukan menjadi tanggung jawab penulis, penyebar, ataupun media penyelenggara konten ini.
I. PERSIAPAN Copy-kan terlebih dahulu files home.php dan post.php ke dalam folder yang diinginkan. Dalam hal ini, file yang bersangkutan diletakan pada folder xss sehingga ketika ingin mengaksesnya, maka harus mengakses melalui URL : http://localhost/xss/home.php
Cross Site Scripting Demo
t.o.creativity@live.com mata dibuat hanya untuk tujuan pendidikan. Kesalahan penggunaan dari tutorial yang diberikan ini, bukan menjadi tanggung jawab penulis, penyebar, ataupun media penyelenggara konten ini. home.php dan post.php ke dalam folder yang diinginkan. Dalam hal ini, file yang bersangkutan diletakan pada folder xss sehingga ketika ingin mengaksesnya, maka harus http://localhost/xss/home.php Figure 1 home.php esalahan penggunaan dari tutorial yang diberikan ini, bukan menjadi tanggung jawab penulis, penyebar, ataupun home.php dan post.php ke dalam folder yang diinginkan. Dalam hal ini, file yang bersangkutan diletakan pada folder xss sehingga ketika ingin mengaksesnya, maka harus
II. SKENARIO (POST METHOD) Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan POST Method. paling sederhana untuk melakukan pemeriksaan memberikan tag HTML sederhana berupa heading atau dengan menggunakan javascript untuk memunculkan pop up alert. Contoh pemberian tag HTML berupa heading (dilakukan dengan POST Method. Injeksi di form yang tersedia). Bila ternyata terdapat kelemahan XSS pada form yang bersangkutan, maka akan keluar hasil sebagai berikut : Figure 3 Injeksi yang berhasil dilakukan Kemudian, untuk uji coba dengan menggunakan javascript, Anda hanya perlu mengganti tag : <h1>heading 1</h1> dengan <script>alert(1)</script> Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan POST Method. paling sederhana untuk melakukan pemeriksaan terhadap celah Cross Site Scripting memberikan tag HTML sederhana berupa heading atau dengan menggunakan javascript untuk Contoh pemberian tag HTML berupa heading (dilakukan dengan POST Method. Injeksi di Figure 2 Injeksi dengan Tag HTML Bila ternyata terdapat kelemahan XSS pada form yang bersangkutan, maka akan keluar hasil sebagai
Injeksi yang berhasil dilakukan dengan tag HTML dengan menggunakan javascript, Anda hanya perlu mengganti tag : <script>alert(1)</script> Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan POST Method. Hal Cross Site Scripting yaitu dengan memberikan tag HTML sederhana berupa heading atau dengan menggunakan javascript untuk Contoh pemberian tag HTML berupa heading (dilakukan dengan POST Method. Injeksi di-input pada
Bila ternyata terdapat kelemahan XSS pada form yang bersangkutan, maka akan keluar hasil sebagai dengan menggunakan javascript, Anda hanya perlu mengganti tag : Bila berhasil, maka hasilny adalah :
Figure 4 Injeksi yang berhasil dilakukan dengan javascript
III. SKENARIO (GET METHOD) Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan GET Method. Coba ketikan URL berikut : http://localhost/xss/home.php?username=abc&password=abc&token=abc (ingat, URL yang Anda gunakan mungkin akan berbeda). Dalam hal ini, kita akan dapat melihat bahwa pengisian terhadap form yang tersedia juga dapat dilakukan via URL (GET Method). Sekar coba injeksi dengan javascript sederhana seperti sebelumnya pada URL yang ada. Misalnya, dalam hal ini, username=abc, maka kita ganti menjadi username=<script>alert(1)</script>
Bagaimana? Hasilnya mencurigakan bukan? Suatu metacharacter dapat masuk ke luar dari form yang ada. Nah, mari kita sedikit melihat source code dari hasil setelah injeksi ini. Figure Tertulis : Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan GET Method. Coba http://localhost/xss/home.php?username=abc&password=abc&token=abc (ingat, URL yang Anda gunakan mungkin akan berbeda). Dalam hal ini, kita akan dapat melihat bahwa pengisian terhadap form yang tersedia juga dapat dilakukan via URL (GET Method). Sekar coba injeksi dengan javascript sederhana seperti sebelumnya pada URL yang ada. Misalnya, dalam hal ini, username=abc, maka kita ganti menjadi username=<script>alert(1)</script> Figure 5 Injeksi pada GET Method Bagaimana? Hasilnya mencurigakan bukan? Suatu metacharacter dapat masuk ke luar dari form yang ada. Nah, mari kita sedikit melihat source code dari hasil setelah injeksi ini. Figure 6 View Source pada Hasil Injeksi Pada bagian ini, kita akan beralih dengan melakukan pemeriksaan celah XSS dengan GET Method. Coba http://localhost/xss/home.php?username=abc&password=abc&token=abc (ingat, URL yang Anda gunakan mungkin akan berbeda). Dalam hal ini, kita akan dapat melihat bahwa pengisian terhadap form yang tersedia juga dapat dilakukan via URL (GET Method). Sekarang, mari kita coba injeksi dengan javascript sederhana seperti sebelumnya pada URL yang ada. Misalnya, dalam hal
Bagaimana? Hasilnya mencurigakan bukan? Suatu metacharacter dapat masuk ke luar dari form yang
Perhatikan baik-baik. Bila script berjalan dengan baik, maka seharusnya seperti ini : <td> <input type="text" name="txpassword" size=50 value="abc"/> </td>
Sederhananya adalah, bila berjalan dengan baik, maka setiap value yang ada akan berwarna biru. Namun, bila tidak berjalan sebagaimana harusnya, maka akan berwarna merah seperti yang nampak pada gambar.
Perhatikan alurnya baik-baik, script ini diakhir oleh character > di bagian akhir. Dikarenakan kita juga mempunyai character > pada injeksi kita (</script>), maka secara tidak langsung, hasil injeksi kita akan mati atau tidak berjalan. Lalu, bagaimana menjalankannya? Tinggal tambahkan character > di awal bukan? Tapi, belum selesai sampai di sini. Selain menambahkan character > di awal, terdapat 1 character lagi yang harus ditambahkan.
Setiap deklarasi, dilanjutkan dengan tanda kutip. Sekarang, permasalahan ke-2 yang membuat script kita tidak berjalan adalah script ini dinilai bagian dari value sehingga fungsi pop up nya tidak akan keluar karena dibaca sebagai input-an biasa. Untuk membuatnya berjalan, maka kita harus tutup tanda kutip pada value. Kurang lebih, saat nilai belum diisi, maka sistem secara tidak langsung sudah siap dengan syntax berikut : Input type= _____ menunggu isi dan kemudian ditutup setelah diisi. Name= _____ menunggu isi dan kemudian ditutup setelah diisi. Value= _____ menunggu isi dan kemudian ditutup setelah diisi. Maka, pada bagian value, kita isikan dengan character langsung supaya dia langsung tertutup. Kemudian, baru dilanjutkan dengan character > yang merupakan penutup akhir script. Jadi, inti akhirnya begini : <td> <input type="text" name="txusername" size=20 value=""><script>alert("1")</script>" /></td>
Langsung saja kita ke praktik nya : Ketikan pada URL : http://localhost/xss/home.php?username="><script>alert("1")</script>&password=abc&token=abc Bila hasilnya benar, maka akan nampak hasil seperti berikut ini :
Figure 7 Hasil injeksi melalui GET Method
Hal ini juga berlaku untuk value password dan token pada scenario ini.
IV. SOLUSI Berikan pem-filter-an terhadap metacharacter baik pada form maupun pada URL yang ada. Jadi, seseorang tidak diizinkan untuk meng-input character seperti > / \ ; ataupun ,. Berbagai macam bahasa pemrograman mempunyai ciri khas tersendiri dalam mengatasi hal ini, namun inti dari semuanya tetap sama.
V. KESIMPULAN Dari dua scenario di atas, dapat kita lihat bahwa terdapat perbedaan yang cukup significant dari hasil injeksi pada URL yang ada. - Pada POST Method, Attacker tidak dapat mengirimkan langsung link hasil injeksi kepada korbannya. Bukan berarti tidak dapat, hanya saja diperlukan pihak ke-3 untuk dapat menginjeksikan script yang ada pada target. Dengan mempertimbangkan hal ini, tentu saja kita tidak dapat menilai bahwa nilai risiko yang terdapat di dalamnya tinggi.
- Pada GET Method, Attacker dapat langsung mengirimkan link hasil injeksi kepada korbannya. Dengan melihat perbedaan antara kedua metode di atas, maka dapat disimpulkan bahwa XSS dengan GET Method jauh lebih berbahaya dibandingkan dengan POST Method.
- Script yang diinjeksikan pada demo ini dapat bervariasi.
- Cara mem-bypass logika aplikasi pada demo ini merupakan satu dari sekian banyak cara dalam mengakali hal ini. Jadi, tidak selalu setiap form ataupun URL dapat di-bypass dengan cara ini.