Kerentanan kode di atas terletak pada variabel $sub_page
, yang dapat dimanipulasi untuk menyertakan path berbahaya misalnya /etc/passwd
.
Selain itu, penyerang dapat menyertakan file PHP di luar direktori yang dituju (misalnya, ../../../../malicious_script
), yang menyebabkan serangan arbitrary code execution.
Perbaikan dengan pembatasan file yang tidak diinginkan
Mekanisme validasi dengan in_array
memastikan bahwa hanya nilai variabel $sub_page
yang sudah ditentukan saja yang dapat diterima, yaitu dashboard.php, profile.php, dan settings.php. Hal ini mencegah penyerang menggunakan path secara sembarangan karena input pengguna harus sesuai dengan aturan opsi yang telah ditetapkan sebelumnya.
P.S.:
Snippet di atas didapat dari riset software plugin WordPress: Tutor LMS