Mewaspadai Risiko Client Side Attack – Reflected XSS (Bagian I)

15/05/2015 | Posted by Admin
Mewaspadai Risiko Client Side Attack – Reflected XSS (Bagian I)

Introduction
Kemudahan untuk memajukan usaha pribadi ataupun organisasi sering kali menjadi alasan utama demi tercapainya hasil bisnis yang baik. Pembuatan maupun pengembangan suatu aplikasi pada saat sekarang ini pun seakan sudah menjadi suatu “keharusan” tersendiri dalam menjawab sebagian (atau bahkan seluruh) tantangan yang dihadapi dalam berbisnis.

Seperti yang telah disampaikan sebelumnya, jika dilihat dari sudut pandang bisnis, tentu saja pembuatan maupun pengembangan aplikasi inimerupakan suatu hal yang sangat menguntungkan dalam memajukan usaha.Bayangkan, ketika suatu proses yang membutuhkan waktu selama berhari-hari untuk selesai dikerjakan secara manual dapat diubah menjadi beberapa jam saja karena telah diproses secara otomatis oleh aplikasi yang dibuat seperti payroll ataupun inventory system. Bahkan untuk membuka suatu toko (walau secara virtual) pun sudah dapat dilakukan dengan mudah dengan membangun aplikasi berbentuk e-commerce yang tentunya sudah tidak asing lagi pada saat ini.

Namun, bagaikan suatu bentuk jalan yang tidak selalu lurus, perolehan akan kemajuan dari pengembangan ataupun pembuatan aplikasi iniseakan seperti suatu pisau yang memiliki dua sisi. Permasalahan yang cukup berbahaya pun dapat muncul ketika developer dari aplikasi tidak mengindahkan hal-hal yang berkaitan dengan keamanan.

 

Information Security Terminology
Berdasarkan definisi dari Wikipedia, keamanan informasi pada dasarnya merupakan suatu bentuk perlindungan terhadap informasi dan sistem informasi dari adanya penyalahgunaan akses, pemakaian, penyebaran, gangguan, modifikasi, dan bahkan penghancuran. Merujuk terhadap definisi yang ada,EC-Council pun mengambil satu benang merah yang disimpulkan menjadi 5 (lima) elemen secara garis besar, yaitu confidentiality, integrity, availability, authenticity, dan non-repudiation. Bila satu dari lima elemen ini rusak, maka dapat dipastikan bahwa keamanan informasi yang terdapat pada suatu sistem pun akan terganggu.

Perlu diketahui bahwa proses untuk mengganggu keamanan informasi ini dapat dilakukan baik secara fisik maupun digital. Di dalam penerapannya, beberapa hal yang menjadi skenario serangan pun akan dilakukan satu persatu demi mencapai tujuan yang ada.

 

Concept of Attack – Client Side Attack
Secara teknis, konsep penyerangan dapat dilakukan baik secara langsung menuju sistem yang ada ataupun melalui sisi client terlebih dahulu (client side). Proses penyerangan untuk client side ini sendiri dapat terbagi menjadi dua motif dengan satu inti, yaitu berupa “memberikan gangguan” terhadap elemen yang telah disampaikan pada bagian sebelumnya. Adapun motif yang dilakukan secara umum yaitu antara berfokus terhadap mengambil alih sistem yang dikelola oleh seseorang atau bahkan mengambil informasi/data yang dimiliki oleh seseorang yang bersangkutan.

Terlepas dari pembicaraan mengenai motif yang ada, pada dasarnya proses penyerangan secara client side ini dilakukan dengan tanpa merusak suatu sistem secara langsung. Pada penerapannya, penyerangan ini dilakukan dengan memanfaatkan kelengahan dari client dalam melakukan “interaksi”. Interaksi ini sendiri dapat terbagi menjadi beberapa macam kejadian seperti mengklik suatu URL yang mencurigakan (malicious URL), mengunjungi situs mencurigakan (malicous website), atau bahkan membuka suatu dokumen “menarik”. Perlu diketahui bahwa kejadian-kejadian ini baru dapat “berhasil” dengan baik untuk diterapkan bila client telah melakukan interaksi terhadap hal yang telah dipersiapkan oleh Attacker atau setidaknya bila sistem yang dimiliki oleh client telah memenuhi kriteria “vulnerable” dari sudut pandang yang ada.

Merujuk terhadap konsep yang di bahas di bagian ini, pembahasan pada tulisan ini pun akan lebih diarahkan menuju salah satu serangan client side yang cukup terkenal dan tidak terlalu asing, yaitu Cross Site Scripting (XSS).

 

Type of Cross Site Scripting (XSS)
Cross Site Scripting (XSS)merupakan salah satu jenis serangan yang memanfaatkan kelemahan aplikasi dari sisi penyaringan terhadap suatu metacharacter. Secara teknis, serangan ini diproses dengan membentuk suatu script yang dapat “dipahami” oleh suatu aplikasi yang dilanjutkan dengan kegiatan injeksi terhadap beberapa parameter tertentu.

Menurut OWASP (Open Web Application Security Project), organisasi internasional ternama yang berfokus terhadap keamanan perangkat lunak, kerentanan terkait Cross Site Scripting (XSS) sendiri terbagi menjadi beberapa bagian, yaitu Reflected XSS (non-persistent – OTG-INPVAL-001), Stored XSS (persistent – OTG-INVAL-002), dan DOM based XSS (OTG-CLIENT-001).

Hal yang akan dibahas terlebih dahulu pada tulisan ini yaitu mengenai Reflected XSS (OTG-INPVAL-001) walaupun pada dasarnya proses pengujian baik untuk Reflected maupun Stored XSS ini memiliki keserupaan. Sekedar informasi, Reflected XSSini sering juga dikenal dengan nama non-persistent XSS.

 


Reflected Cross Site Scripting (XSS)
Pernahkah Anda menemukan suatu situs yang menampilkan hal yang Anda input-kan? Contoh sederhana dari pertanyaan dasar ini adalah situs yang memiliki fitur pencarian (search) atau situs seperti search engine. Pada situs yang memiliki fitur demikian, maka dapat dipastikan bahwa setiap hal yang diketikan akan selalu tampak pada hasil pencarian baik diulang maupun langsung menampakan hasil.
 

 

How to …
Pada dasarnya, langkah sederhana yang dapat dilakukan untuk menguji kerentanan ini yaitu dengan mencoba untuk meng-input-kan script sederhana di berbagai URL (GET parameter), POST parameter, hidden form, ataupun segala model seperti model radio/selection values. Script sederhana ini pun dapat berupa tag html ataupun javascript seperti berikut:
1. HTML : <h1> Test for XSS </h1> atau <marquee> Test for XSS </marquee>
2. Javascript : <script>alert(“1”)</script>

Setelah mengetahui contoh script sederhana untuk menguji hal ini, maka langkah selanjutnya yang perlu dilakukan adalah dengan meng-input-kan salah satu dari script yang ada untuk memastikan bahwa parameter terkait memiliki kerentanan akan XSS.

 

Sample Injection from URL
Untuk model pengujian injeksi dari sisi URL, maka hal yang perlu dilakukan hanyalah langsung mengganti value yang ada pada URL dengan script sederhana yang ada:

 
Bila merujuk terhadap gambar di atas, proses injeksi terhadap URL dapat dilakukan dengan menggantikan value “Reflected” dan /atau “Identity” denganscript yang telah dijelaskan pada bagian sebelumnya.
Sebelum: http://example.com/home.php?user=Reflected&identity=XSS
Sesudah: http://example.com/home.php?user=<script>alert(“XSS”)</script>

Dalam contoh di atas, bagian yang diinjeksikan hanyalah pada bagian “user”. Bila hasil injeksi ini berhasil, maka akan terdapat tampilan popuppada halaman yang dihasilkanseperti pada gambar berikut ini:
 
Figure 3 XSS Result - URL Parameter

 

Sample Injection from Form, Hidden Form, and other.
Untuk model pengujian injeksi dari sisiform, maka seorang penguji dapat kembali merujuk terhadap contoh terkait figure 1(dengan mengetikan script pada fitur search yang tersedia).

Sedangkan untuk proses injeksi terhadap hidden form sendiri, umumnya seorang penguji dapat menggunakan tool seperti Web Developer (Add ons dari Firefox ataupun Google Chrome). Kemudian, untuk pengujian terhadap POST Parameter ataupun radio/selection values, maka seorang penguji dapat melakukan intercept terlebih dahulu terhadap data yang mengalir untuk dikirimkan sebelum akhirnya benar-benar terkirim ke suatu server.

 

Threat and Impact
Perlu menjadi penekanan kembali bahwa pada dasarnya model penyerangan ini sama sekali tidak berdampak terhadap server secara langsung. Tidak terdapat satu pun tampilan yang berubah pada aplikasi kecuali korban membuka URL yang sama (untuk skenario sample injection from URL) atau traffic korban di-intercept dan diubah oleh Attacker.

Kemungkinan ancaman yang dapat dimunculkan dari akibat pemanfaatan kerentanan ini adalah tercurinya data/informasi dari korban atau bahkan diambil alihnya sistem korban (yang tentunya sesuai dengan kondisi tertentu).

Untuk alur penipuan, tentu Attacker dapat membuat suatu tampilan berbentuk form dan mengirimkannya ke dalam bentuk URL untuk disampaikan ke korban. Kemudian, setiap korban meng-input-kan ataupun mengirimkan informasi, maka informasi itu akan dapat langsung sampai ke Attacker. Namun, untuk alur mengambil alih suatu sistem, maka salah satu contohnya yaitu seorang Attacker perlu mengetahui lebih lanjut akan perangkat lunak yang digunakan oleh korban seperti browser.
Perlu menjadi catatan bahwa definisi dari “mengetahui lebih lanjut” dalam konteks ini yaitu mengetahui kemungkinan kerentanan yang “dimiliki” oleh perangkat lunak yang sedang digunakan. Alurnya sendiri dapat diproses dengan menghadapkan seorang korban untuk menuju ke “halaman menarik” yang telah dipersiapkan oleh Attacker untuk kemudian dilanjutkan dengan eksekusi “kode menarik” terhadap browser yang rentan. Contoh sederhananya adalah permasalahan pada salah satu produk milik Microsoft dengan kode MS07-017 - Windows ANI LoadAniIcon() Chunk Size Stack Buffer Overflow (HTTP).

 

Conclusion
Demikian pembahasan pada tulisan kali ini terkait dengan pemanfaatan serangan dari client side. Tentunya, sekecil apapun bentuk serangan dan efek sampingnya terhadap sistem, risiko tetaplah menjadi suatu hal yang harus diperhatikan. Di dalam realita, tidak selalu risiko ini dapat dikaitkan dengan materi (finansial), namun dapat juga dihubungkan dengan suatu reputasi yang terkadang reputasi ini sendiri “harganya” jauh lebih mahal daripada kerugian fisik secara langsung.

Untuk model serangan, alur dari serangan ini sendiri dapat selalu dikembangkan dengan variasi lainnya seperti dengan mengkonversi URL “menarik” ini ke dalam bentuk short URL, menggabungkannya dengan cerita palsu yang menarik perhatian, ataupun yang lainnya.

Dengan melihat hal ini, maka tentu langkah yang harus dilakukan oleh seorang pelaku bisnis ataupun developer adalah:
1. Dengan meningkatkan awareness terhadap keamanan informasi.
2. Memastikan aplikasi yang dibangunnya ini aman dengan melakukan Security Testing terlebih dahulu, terutama terhadap aplikasi yang bersifat finansial ataupun yang menjadi image suatu perusahaan.
3. Memastikan bahwa seluruh risiko dapat diminimalisasi sehingga mencapai titik toleransi tertentu dengan melakukan Security Testing secara berkala.
4. Mengembangkan pengetahuanterkait keamanan informasi untuk setiap pelaku yang berhubungan dengan langsung dalam pengembangan dan pembuatan suatu aplikasi seperti para developer.[]
---

 


Reference
• http://en.wikipedia.org/wiki/Information_security
• http://www.sans.org/information-security/
• http://www.eccouncil.org/certification/certified-ethical-hacker
• https://www.owasp.org/index.php/Types_of_Cross-Site_Scripting
• https://www.owasp.org/index.php/Testing_for_Reflected_Cross_site_scripting_%28OTG-INPVAL-001%29

 

Penulis:
Yohannes
Information Security Consultant
PT. Mitra Integrasi Informatika (MII)

Informasi lebih lanjut mengenai Training Seputar Information Security dapat diperoleh dengan menghubungi Metrodata Training Center di http://www.metrodata-training.com.

BACK TO TOP
Close