📁 Path Traversal
Path Traversal (Directory Traversal) adalah kerentanan yang memungkinkan penyerang mengakses file di server yang seharusnya tidak boleh diakses, misalnya file konfigurasi atau password.
💥 Contoh Kode Berbahaya (Rentan)
<?php // Ambil input nama file dari user $file = $_GET['file']; // Langsung gabungkan ke path $content = file_get_contents("/var/www/files/" . $file); echo $content; ?>
🔎 Penjelasan: Input user (file) langsung digunakan untuk membaca file di server. Penyerang bisa masukkan ../../../../../etc/passwd
untuk mencuri data penting!
🔍 Contoh Payload Berbahaya
?file=../../../../../../etc/passwd
🔎 Payload ini akan membaca file sistem /etc/passwd
yang berisi data user Linux!
🛡️ Cara Mencegah Path Traversal
1️⃣ Validasi Nama File
<?php $allowed_files = ['file1.txt', 'file2.txt']; $file = $_GET['file']; if (in_array($file, $allowed_files)) { echo file_get_contents("/var/www/files/" . $file); } else { echo "File tidak diizinkan!"; } ?>
🔎 Penjelasan: Hanya file tertentu yang diizinkan (pakai whitelist).
2️⃣ Gunakan Fungsi Realpath & Cek Direktori
<?php $file = $_GET['file']; $base_dir = '/var/www/files/'; $realpath = realpath($base_dir . $file); if (strpos($realpath, $base_dir) === 0) { echo file_get_contents($realpath); } else { echo "Akses ditolak!"; } ?>
🔎 Penjelasan: realpath()
memastikan file benar-benar berada di direktori yang diizinkan, mencegah traversal ke luar folder.
3️⃣ Jangan Tampilkan Error Path!
🔎 Penjelasan: Matikan error detail di production. Jika error path muncul, itu akan membantu penyerang tahu struktur file.