LOCAL/REMOTE FILE INCLUSION
LOCAL/REMOTE FILE INCLUSION
DEFINISI
•Local File Inclusion (LFI) adalah sebuah kerentanan dalam aplikasi web yang memungkinkan penyerang untuk memasukkan file lokal ke dalam eksekusi kode melalui input yang tidak divalidasi.
• Sedangkan serangan yang melibatkan upload file lalu mengeksekusi file tersebut disebut Remote File Inclusion (RFI)
TUJUAN SERANGAN
• Membaca file sensitif di server.
• Mengeksekusi skrip berbahaya.
• Mencuri data atau mendapatkan akses lebih lanjut.
DEMO 1: SERANGAN LFI
• Buat sebuah folder di C:\xampp\htdocs\ bernama lfi.
•Di dalam folder lfi, buat file bernama index.php dengan isi sebagai berikut:
• Buat file home.php di folder yang sama dengan isi:
• Buka browser dan akses http://localhost/lfi/index.php.
•Untuk membaca file di sistem Windows, kita bisa mencoba membaca file C:\xampp\htdocs\lfi\home.php dengan mengubah parameter URL: http://localhost/lfi/index.php?page=C:/xampp/htdocs/lfi/home.php
•Coba akses file sensitif seperti konfigurasi Apache: http://localhost/lfi/index.php?page=C:/xampp/apache/conf/httpd.conf Catatan: Penyerang bisa mencoba berbagai path untuk menemukan file yang bisa diakses.
DEMO 2: SERANGAN RFI
• Buat folder di C:\xampp\htdocs\ bernama uploads.
•Buat file upload.php di C:\xampp\htdocs\lfi\ dengan isi sebagai berikut:
• Buat file PHP berbahaya (shell.php) dengan isi:
•Akses http://localhost/lfi/upload.php, pilih file shell.php, dan upload.
Mencegah LFI
Modifikasi index.php
untuk menghindari LFI:
<?php// index.php$whitelist = ['home.php', 'about.php', 'contact.php']; // Tambahkan file yang diijinkan$page = isset($_GET['page']) ? $_GET['page'] : 'home.php';if (in_array($page, $whitelist)) {include($page);} else {echo "File not found!";}?>
Mencegah RFI
Modifikasi upload.php
untuk menghindari RFI:
<?phpif ($_SERVER['REQUEST_METHOD'] == 'POST') {$target_dir = "uploads/";$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);$fileType = pathinfo($target_file, PATHINFO_EXTENSION);$allowedTypes = ['jpg', 'jpeg', 'png', 'gif', 'pdf']; // File yang diijinkanif (in_array($fileType, $allowedTypes)) {if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {echo "The file ". htmlspecialchars(basename($_FILES["fileToUpload"]["name"])). " has been uploaded.";} else {echo "Sorry, there was an error uploading your file.";}} else {echo "Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed.";}}?>
Hasilnya:
Dampak dari Serangan LFI & RFI
LFI:
- Membaca file sensitif (misalnya konfigurasi server, file password).
- Mengeksekusi skrip berbahaya yang ada di server.
- Eskalasi hak akses dengan membaca file seperti
/etc/passwd
di sistem UNIX.
RFI:
- Mengunggah dan mengeksekusi file berbahaya dari server eksternal.
- Mengeksekusi skrip berbahaya yang bisa mengambil alih server.
- Pencurian data dan eskalasi hak akses.
Komentar
Posting Komentar