Cara Memeriksa Apakah Sistem WordPress Anda Aman Terhadap Serangan XSS

Diterbitkan: 2016-07-09

Di seluruh dunia, hampir 48 persen dari semua situs web rentan terhadap skrip lintas situs (XSS). Di seluruh dunia, hampir tepat 25 persen dari semua situs web menggunakan platform WordPress.

Oleh karena itu dalam diagram Venn situs web yang rentan terhadap XSS dan situs web yang menjalankan platform WordPress, tumpang tindihnya harus cukup besar.

Ini bukan ketukan pada platform itu sendiri. Tim WordPress telah menjadikan keamanan sebagai bagian integral dari pernyataan misinya dan secara agresif menambal kerentanan setiap kali diketahui. Namun ini tidak menghentikan orang untuk mengkodekan tema yang tidak aman atau memasang plugin yang tidak aman. Masalah-masalah ini adalah dua jalan masuk utama untuk serangan XSS di situs WordPress, dan artikel ini akan membahas cara menghentikannya.

Pengantar Skrip Lintas Situs

Pertama, mari kita bahas bagaimana serangan XSS dilakukan. Ada lebih dari satu jenis serangan XSS, jadi saya akan mulai dengan definisi yang disederhanakan. Umumnya, serangan XSS dimulai dengan input yang tidak bersih—formulir komentar, kotak komentar, bilah pencarian, dan lain-lain. Serangan ini sangat beragam dalam kecanggihannya. Sebenarnya, bentuk serangan XSS yang paling sederhana dilihat oleh pengguna WordPress setiap hari: komentar spam. Anda tahu apa yang saya bicarakan: “ Terima kasih untuk artikel yang sangat bagus. Omong-omong, inilah situs saya di mana saya menghasilkan $5.000 seminggu dengan bekerja dari rumah: www.only-an-idiot-would-click-this-link.co.uk.

Dalam beberapa hal, komentar spam adalah contoh sempurna dari serangan XSS. Entitas jahat merusak infrastruktur situs Anda (kotak komentar) untuk menempatkan konten mereka (tautan berbahaya) ke situs Anda. Meskipun ini adalah contoh ilustratif yang bagus, serangan XSS yang lebih realistis akan jauh lebih halus. Komentar spam membutuhkan waktu sekitar lima detik untuk dibuat oleh seseorang. Serangan XSS adalah sesuatu yang peretas yang tepat akan menghabiskan lebih banyak waktu.

spam as visitor comments

Topi hitam sejati akan mencoba memanfaatkan setiap dan semua aspek situs Anda yang mengirimkan data ke server, pada dasarnya menggunakannya sebagai editor teks mini. Jika input Anda tidak dipertahankan, itu berarti mereka benar-benar dapat mengambil kode mereka dan memaksa aplikasi Anda untuk menjalankannya dan merender di browser pengguna (dan itu dapat mencakup browser Anda). Tidak seperti komentar spam, hanya pemeriksaan mendetail dari kode situs Anda yang dimodifikasi atau menyisir interaksi situs web yang dapat mengungkapkan pelanggaran. Seperti yang bisa dibayangkan, tidak ada habisnya jumlah hal-hal buruk yang dapat dihasilkan dari pelanggaran semacam itu.

Vandalisme sederhana adalah akibat yang relatif umum dari serangan XSS, yang mengakibatkan pengguna Anda diperlihatkan gambar-gambar aneh atau propaganda politik sebagai ganti konten Anda. Pemasar dengan sedikit rencana jangka panjang atau masalah etika akan menggunakannya untuk beriklan kepada orang-orang yang bertentangan dengan keinginan mereka. Serangan yang lebih bernuansa dan halus dapat mencuri kredensial login pengguna Anda. Jika salah satu dari mereka memiliki hak admin, maka informasi pribadi apa pun yang Anda simpan di situs Anda mungkin bisa diambil. Atau, mereka mungkin menggunakan serangan XSS awal sebagai pengungkit untuk membuka situs Anda dan menginstal malware yang lebih canggih.

Menghentikan Serangan

Jika Anda adalah individu yang cukup paham kode, dan Anda adalah satu-satunya pemilik situs WordPress yang relatif kecil, maka praktik pengkodean yang aman mungkin akan menjadi cara terbaik untuk mengunci situs Anda dari serangan skrip lintas situs. Saya menyertakan peringatan ini karena jika Anda adalah bagian dari organisasi yang lebih besar yang menjalankan aplikasi yang lebih kompleks, secara manusiawi Anda mungkin tidak dapat menemukan setiap area di mana penyerang jahat mungkin menyuntikkan kode. Situs web modern bisa berukuran besar, dan mungkin Anda perlu menyewa seorang profesional berpengalaman dan menghabiskan waktu Anda untuk kegiatan lain untuk membuat situs web Anda lebih baik lagi bagi pembaca Anda.

Peringatan lain adalah jika Anda tidak terlalu paham kode dan meminta orang lain membangun situs Anda untuk Anda, maka jangan berasumsi bahwa mereka telah menggunakan praktik pengkodean yang aman. Bahkan pengembang yang paling berpengalaman pun diketahui mengabaikan keamanan atau membuat kesalahan kecil tanpa meminta orang lain memeriksa pekerjaan mereka. Pengembang lain mungkin tidak tahu apa yang mereka lakukan dalam hal keamanan, dan yang lain masih mengabaikan keamanan untuk menyelamatkan waktu untuk diri mereka sendiri (meskipun kurangnya profesionalisme dalam hal itu). Singkatnya, pastikan Anda mempekerjakan seorang profesional yang diakui yang tidak mengambil jalan pintas dalam hal mengembangkan dan melindungi situs web Anda.

Kekhawatiran itu diungkapkan, salah satu hal pertama dan termudah yang dapat Anda lakukan untuk mencegah skrip lintas situs adalah memvalidasi data pengguna.

Katakanlah Anda memiliki formulir pendaftaran di situs Anda, dan formulir itu meminta pengguna untuk memasukkan nama mereka. Pengguna jahat mungkin mengetik sesuatu seperti:

[xhtml]
<script>CoughUpYourPreciousData();</script>
[/xhtml]

Ini mungkin, misalnya, menyebabkan orang berikutnya yang mengunjungi halaman itu mengirim salinan cookie mereka ke penyerang.

Anda dapat melihat bahwa dalam contoh ini, string kode di atas tidak terlihat seperti nama seseorang. Server Anda tidak mengetahui hal ini, tetapi dengan menggunakan beberapa parameter yang ditetapkan, Anda dapat mengajarkannya. Misalnya, Anda dapat memberi tahu bidang tersebut untuk menolak karakter khusus, seperti <>, () dan ; (mereka tidak terlalu dibutuhkan di bagian komentar). Anda dapat memberi tahu bidang itu bahwa nama seseorang mungkin tidak memiliki angka di dalamnya. Jika Anda ingin sedikit kejam, Anda dapat memberi tahu bidang tersebut untuk menolak input yang panjangnya lebih dari lima belas karakter (atau Anda dapat mengubah nilainya sesuai keinginan). Mengambil langkah-langkah ini secara drastis akan membatasi jumlah kerusakan yang dapat dilakukan penyerang dengan bidang tertentu.

Stopping Attacks

Bahkan dengan validasi data, mungkin ada formulir atau bidang di mana Anda tidak bisa secara realistis membatasi tipe karakter yang digunakan, seperti di formulir kontak atau bidang komentar. Yang dapat Anda lakukan adalah membersihkan data. Proses ini membuat HTML tidak mungkin dieksekusi di bidang tertentu, mengubah segala sesuatu yang mungkin dikenali sebagai bagian dari kode yang dapat dieksekusi menjadi karakter non-coding. Sebagai contoh, hyperlink tidak akan muncul di tempat yang mungkin ada.

Terakhir, ada kasus di mana situs Anda mungkin menampilkan data yang tidak aman bagi pengguna. Katakanlah seseorang menulis komentar jahat di salah satu halaman Anda, yang kemudian diindeks oleh fungsi pencarian situs web Anda. Setiap kali salah satu pengguna Anda melakukan pencarian, kode berbahaya tersebut dijalankan saat browser mereka memuat hasil pencarian. Ini dicegah dengan mengeluarkan data, yang memastikan bahwa saat situs Anda mengirimkan data ke pengguna, satu-satunya kode yang berjalan adalah kode yang ingin Anda jalankan.

Untuk lebih lanjut tentang validasi data, sanitasi data, dan pelolosan data, Codex WordPress memiliki sumber daya yang sangat baik. Ini akan menjelaskan konsep-konsep di atas secara rinci serta memberikan lebih banyak contoh yang dapat diterapkan secara universal.

Metode lain

Perusahaan besar memiliki situs web yang lebih besar; itu fakta. Mungkin ribuan orang menggunakan situs Anda setiap hari. Mungkin selain bentuk dan bidang standar, ada juga animasi, berbagai portal, bagian yang ditulis dalam Java, dan sebagainya. Bahkan jika Anda melacak semua itu, mungkin ada hari nol di salah satu aplikasi Anda, dan Anda tidak punya cara untuk membela diri.

Dalam situasi seperti ini, jika Anda memiliki pengaruh dan anggaran untuk melakukannya, saya sarankan Anda berinvestasi di Web Application Firewall (WAF). WAF yang baik akan memiliki aturan korelasi yang secara otomatis mengidentifikasi dan memblokir string HTML yang paling sering dikaitkan dengan serangan injeksi kode. Mereka juga dapat memberi tahu Anda saat aplikasi mulai mengekstrak data saat tidak seharusnya atau melakukannya dalam volume yang tidak biasa, sehingga membantu mempertahankan diri dari serangan zero-day dan ancaman lanjutan lainnya. WAF bukanlah peluru perak, tetapi merupakan alat yang sangat berharga bagi para profesional keamanan dan pemilik situs web yang berharap dapat melindungi aplikasi yang kompleks.

Ada juga sejumlah plugin yang dimaksudkan untuk bertahan dari serangan XSS. Saya sebenarnya tidak merekomendasikan ini. Alih-alih mengurangi risiko, banyak dari plugin ini hanya mewakili permukaan serangan lain untuk dieksploitasi oleh peretas. Bahkan salah satu plugin keamanan yang paling terkenal dan banyak digunakan, Akismet, ditemukan rentan terhadap serangan XSS tahun lalu. Dalam hal menangkis serangan XSS, jangan mengandalkan setengah-setengah. Kembangkan keterampilan yang diperlukan dan gunakan seperangkat alat yang sesuai untuk menjaga keamanan situs web Anda.

Aplikasi Praktis lainnya

Informasi ini mungkin agak rumit bagi yang belum tahu, tetapi saya tidak suka orang-orang berkecil hati dengan potensi kerumitan informasi ini. Jika serangan XSS terjadi, Anda dapat yakin bahwa pembersihan setelah peristiwa semacam itu akan jauh lebih rumit daripada membuat perubahan di situs web Anda. Membersihkan biaya reputasi situs web Anda (pembaca biasa akan meninggalkan situs web Anda dengan mudah) akan menjadi masalah tambahan yang tidak perlu Anda khawatirkan.

Bahkan jika Anda meminta orang lain untuk menangani pengembangan dan keamanan situs web Anda, lakukan apa yang Anda bisa untuk setidaknya dapat menanggapi keadaan darurat dan mengetahui di mana titik lemah Anda. Mengetahui cara memeriksa sistem Anda akan menjadi keterampilan penting dalam jangka panjang dan menjadi dasar untuk topik keamanan lainnya dan proyek pengembangan situs web. Semuanya saling berhubungan secara online dan sementara serangan XSS mungkin menjadi sesuatu dari tahun-tahun terakhir di telepon (namun tidak mungkin ini), mengetahui seluk beluk situs web Anda tidak akan pernah ketinggalan zaman.

Pikiran Akhir

Lanskap keamanan internet terus berubah. Anda tidak pernah bisa sepenuhnya yakin tentang bagaimana serangan XSS mungkin muncul atau bagaimana itu dapat digunakan untuk melawan Anda, tetapi Anda berhutang kepada diri sendiri dan pembaca Anda untuk memastikan bahwa Anda melakukan segala daya Anda untuk menghentikannya. Terus beri tahu diri Anda tentang ancaman ini dan periksa secara teratur (saya akan merekomendasikan setidaknya setiap bulan) untuk setiap perkembangan yang relevan di dunia keamanan siber.

Ini juga tidak berarti Anda dapat mengabaikan ancaman lain. Akses jaringan publik masih membutuhkan penggunaan VPN agar aman. Anda tidak dapat mengabaikan keamanan komputer mana pun yang Anda gunakan untuk mengakses situs web Anda. Informasi login masih perlu sering diubah dan aman dari serangan brute force. Serangan XSS brutal, tetapi itu bukan satu-satunya ancaman yang harus diwaspadai.

Anda juga mungkin perlu membagikan informasi ini (atau bahkan artikel ini) dengan rekan-rekan Anda dan pihak-pihak yang berkepentingan untuk menyebarkan perlawanan terhadap jenis serangan ini. Meskipun Anda mungkin tidak dapat melakukan terlalu banyak sendiri, jika cukup banyak orang yang melindungi diri mereka sendiri dengan benar, kami mungkin melihat penurunan umum dalam jenis serangan ini karena peretas mencoba mencari cara lain untuk mengambil untung dari pengguna internet yang buruk.

Apakah Anda memiliki pemikiran sendiri tentang cara memeriksa serangan XSS serta mempertahankan diri Anda dari serangan tersebut di masa mendatang? Apakah ada strategi deteksi dan penghapusan lain yang Anda gunakan untuk melawan ancaman ini? Apakah ada alat yang akan Anda rekomendasikan kepada rekan pembaca Anda? Jika demikian, silakan tinggalkan komentar di bawah dan lanjutkan percakapan penting ini dengan rekan pembaca Anda.