LOCAL/REMOTE FILE INCLUSION
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:
<?php
// index.php
$page = isset($_GET['page']) ? $_GET['page'] : 'home.php';
include($page);
• Buat file home.php di folder yang sama dengan isi:
<?php
echo "Welcome to the home page!";
• 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
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:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
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.";
}
}
?>
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
</body>
</html>
• Buat file PHP berbahaya (shell.php) dengan isi:
<?php
echo "Shell executed!";
•Akses http://localhost/lfi/upload.php, pilih file shell.php, dan
upload.
• Setelah file diupload, akses URL untuk mengeksekusi:
http://localhost/uploads/shell.php
TUGAS
• Tambahkan script pada file tersebut agar terhindar dari
serangan LFI & RFI
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$fileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// Check if file is an actual file
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Allow certain file formats
$allowedTypes = array("jpg", "png", "jpeg", "gif", "pdf"); // Add more as needed
if(!in_array($fileType, $allowedTypes)) {
echo "Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed.";
$uploadOk = 0;
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 5000000) { // 5MB limit
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// If everything is ok, try to upload file
} else {
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.";
}
}
}
?>
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Select file to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
</body>
</html>

•Jelaskan dampak dari serangan LFI & RFI
Dampak dari Serangan Local File Inclusion (LFI)
Pengungkapan Informasi Sensitif: Penyerang dapat membaca file-file sensitif di server, seperti file konfigurasi (/etc/passwd
, config.php
, dll.) yang mungkin mengandung informasi rahasia seperti kredensial basis data.
Eksekusi Kode Arbitrer: Jika penyerang dapat menggabungkan serangan LFI dengan teknik lain, mereka dapat mengeksekusi kode PHP atau skrip lainnya di server, yang bisa memberikan kontrol penuh atas server kepada penyerang.
Penggunaan untuk Serangan Lain: Serangan LFI dapat digunakan sebagai pintu masuk untuk serangan lain, seperti Remote Code Execution (RCE) atau privilege escalation, yang memungkinkan penyerang memperoleh akses lebih besar atau melakukan serangan lebih lanjut di sistem.
Kompromi Server: Penyerang dapat mengakses dan memodifikasi data, merusak atau menghapus file, dan bahkan menggunakan server yang diserang untuk menyerang sistem lain (pivoting).
Dampak dari Serangan Remote File Inclusion (RFI)
Eksekusi Kode Berbahaya: Penyerang dapat menyertakan file yang berada di server remote (misalnya, script PHP dari situs lain) dan mengeksekusi kode berbahaya di server korban. Ini bisa memberikan penyerang kontrol penuh atas server korban.
Pengambilalihan Server: Dengan kemampuan untuk mengeksekusi kode arbitrer, penyerang dapat mencuri data, mengubah konfigurasi server, dan bahkan menambahkan backdoor untuk akses selanjutnya.
Distribusi Malware: Penyerang dapat mengunggah dan mengeksekusi malware di server korban, yang dapat menyebar ke pengguna lain yang mengakses situs tersebut.
Kerugian Finansial dan Reputasi: Serangan RFI dapat menyebabkan kerugian finansial langsung melalui pencurian data atau gangguan operasional, serta kerugian reputasi yang signifikan jika data pelanggan atau informasi sensitif lainnya diekspos.
Penggunaan untuk Botnet: Server yang dikompromikan melalui serangan RFI dapat digunakan sebagai bagian dari botnet untuk melakukan serangan DDoS atau aktivitas berbahaya lainnya.
Komentar
Posting Komentar