LOCAL/REMOTE FILE INCLUSION

 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)

  1. 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.

  2. 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.

  3. 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.

  4. 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)

  1. 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.

  2. Pengambilalihan Server: Dengan kemampuan untuk mengeksekusi kode arbitrer, penyerang dapat mencuri data, mengubah konfigurasi server, dan bahkan menambahkan backdoor untuk akses selanjutnya.

  3. Distribusi Malware: Penyerang dapat mengunggah dan mengeksekusi malware di server korban, yang dapat menyebar ke pengguna lain yang mengakses situs tersebut.

  4. 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.

  5. Penggunaan untuk Botnet: Server yang dikompromikan melalui serangan RFI dapat digunakan sebagai bagian dari botnet untuk melakukan serangan DDoS atau aktivitas berbahaya lainnya.






Komentar

Postingan populer dari blog ini

OSINT

CROSS SITE REQUEST FORGERY