Blog kami sebelumnya membahas kerentanan XSS pada plugin Bookly (Plugin Pemesanan dan Penjadwalan Online WordPress – Bookly). Hari ini, kita akan membahas kerentanan XSS lain yang terungkap selama penelitian kami pada plugin yang sama.
Tim kami menemukan kerentanan ini pada Maret 2023. Setelah penemuannya, kami segera memulai prosedur pengungkapan yang bertanggung jawab untuk memastikan kerentanan tersebut segera ditangani. Pengidentifikasi CVE yang ditetapkan untuk kerentanan ini adalah CVE-2023-1159, dan berhasil ditambal pada Mei 2023.
Dalam postingan blog ini, kami akan menganalisis secara komprehensif akar penyebab kerentanan yang ditemukan pada plugin Bookly. Selain itu, kami akan memeriksa patch yang dirilis untuk mengatasi masalah ini secara efektif.
menganalisis CVE–2023-1159 – Skrip Lintas Situs Tersimpan yang Diautentikasi (Admin+) melalui Judul Layanan:
Penelitian kami mengidentifikasi kerentanan pada plugin Bookly terkait kolom "Judul layanan". Kerentanan ini membuat plugin rentan terhadap serangan skrip lintas situs (XSS) yang tersimpan akibat langkah-langkah sanitasi input yang tidak memadai. Perlu dicatat bahwa administrator dapat mengedit atau mengatur judul secara langsung melalui antarmuka plugin.
Setelah penyelidikan lebih lanjut, kami menemukan bahwa jika judul berbahaya dipasang di dalam layanan, judul tersebut akan ditampilkan dan dieksekusi di peramban klien tanpa sepengetahuan atau persetujuan mereka saat mereka mengakses layanan tersebut. Eksekusi ini berpotensi memungkinkan eksekusi kode jarak jauh, yang menimbulkan risiko keamanan yang substansial.
Untuk memberikan pemahaman yang lebih tepat, cuplikan kode berikut mengilustrasikan bagaimana nilai kolom "Judul Layanan" ditetapkan dan dibaca saat membuat layanan baru:

Gbr1. Metode createService, yang dipanggil saat layanan baru dibuat.
'createService' pada gilirannya memanggil metode 'parameter'.

Gbr. 2 menunjukkan metode parameter.
Di dalam metode 'parameters', terdapat pemanggilan fungsi 'getRequest()'. Fungsi ini bertanggung jawab untuk mengambil nilai yang dimasukkan dari antarmuka. Selanjutnya, nilai-nilai ini diteruskan ke metode 'createService', tempat nilai-nilai tersebut disimpan. Namun, penting untuk digarisbawahi bahwa tidak ada sanitasi input yang terjadi selama proses ini, sehingga sistem rentan terhadap potensi risiko keamanan.

Gbr. 3 menunjukkan metode getRequest.
Mengungkap Perbaikan: Menyelidiki Patch
Setelah memeriksa patch yang mengatasi kerentanan tersebut, kami menentukan bahwa variabel $parameters telah menjalani sanitasi yang tepat, yang secara efektif mencegah potensi pelanggaran keamanan dalam program. Peningkatan penting ini mencakup penerapan fungsi 'unfiltered_html' dan metode 'stripScripts', yang krusial dalam sanitasi $parameters dan mitigasi potensi serangan.
Dengan memanfaatkan fungsi 'unfiltered_html', patch ini memastikan bahwa hanya pengguna resmi dengan kemampuan yang diperlukan yang dapat mengirimkan konten HTML tanpa filter. Hal ini mencegah masuknya skrip berbahaya dan secara signifikan mengurangi risiko serangan skrip lintas situs (XSS). Metode 'stripScripts' semakin meningkatkan proses sanitasi dengan menghapus atau menetralkan kode JavaScript yang tertanam di dalam $parameters.
Secara keseluruhan, pendekatan komprehensif terhadap sanitasi ini memastikan bahwa variabel $parameters aman untuk digunakan di seluruh basis kode, meminimalkan potensi kerentanan keamanan dan memperkuat keamanan program secara keseluruhan.

Gambar 4. menggambarkan bercak tersebut.
Kesimpulan
Dalam postingan blog ini, kami mengkaji kerentanan yang ditemukan pada plugin Bookly, yang memungkinkan penyerang terautentikasi memasukkan skrip berbahaya, yang dapat mengancam perangkat pengguna. Untungnya, kerentanan ini telah diperbaiki di versi 21.8. Kami menyarankan pemilik situs WordPress untuk segera memperbarui instalasi mereka ke versi plugin terbaru, yang penting untuk memitigasi potensi serangan. Memastikan penerapan pembaruan dan patch yang tepat waktu sangat penting untuk menjaga keamanan kehadiran online. Selain itu, saat memberikan kapabilitas 'unfiltered_html' kepada peran pengguna, berhati-hatilah dan tetapkan hanya kepada individu tepercaya yang benar-benar membutuhkannya, dengan mempertimbangkan potensi implikasi keamanan dari kapabilitas ini.
Semua SEQRITE dan pelanggan Quick Heal terlindungi dari eksploitasi apa pun yang menargetkan kerentanan ini melalui tanda tangan berikut:
- HTTP/CVE-2023-1159!VK.47550
- HTTP/CVE-2023-1159!VK.47551
- HTTP/CVE-2023-1159!VK.47552
Penulis bersama:
Anjali Rajkumar Raut


