最近,70.php文件引起了很多人的關(guān)注。這個(gè)文件是一段 PHP 代碼,可以輕易地將別人的服務(wù)器上的文件夾作為虛擬磁盤掛載,然后便可以通過 Web 瀏覽器來(lái)瀏覽這個(gè)文件夾的所有內(nèi)容。這個(gè)功能看似很實(shí)用,但實(shí)際上卻存在很嚴(yán)重的安全風(fēng)險(xiǎn)。在本文中,我們將詳細(xì)探討 70.php 的危害以及防范措施。
首先,來(lái)看一下 70.php 文件的代碼:
<?php
error_reporting(0);
$f=@$_GET['f'];
if(!$f)$f=@$_POST['f'];
if(substr($f,-4)==".php")
{
echo("".basename($f)."");
echo(nl2br(htmlspecialchars(file_get_contents($f))));
exit;
}
if(!$f)
{
echo("70.php");
echo("
");
exit;
}
$f=str_replace("..","",$f);
while(substr($f,0,1)=="/")$f=substr($f,1);
if(substr($f,-1,1)=="/")$f=substr($f,0,-1);
if(!file_exists($f))
{
echo("
70.php");
echo("".htmlspecialchars($f)." Not Found !");
exit;
}
if(is_dir($f))
{
$fs=glob($f."/*");
echo("
".htmlspecialchars($f)."");
echo("");
echo("
");
foreach($fs as $nf)
{
if(is_dir($nf))$nf=$nf."/";
echo("");
echo("".$nf." | ");
echo("".strftime("%Y-%m-%d %H:%M:%S",filemtime($nf))." | ");
echo("".filesize($nf)." | ");
echo("
");
}
echo("
");
echo("");
exit;
}
echo("
".basename($f)."");
echo(nl2br(htmlspecialchars(file_get_contents($f))));
exit;
?>這段代碼顯然是個(gè)文件瀏覽器,它所提供的功能看起來(lái)很實(shí)用,可以讓用戶直接在瀏覽器上查看文件目錄和內(nèi)容。但正因?yàn)樗谋憷诳蛡円矔?huì)利用它來(lái)攻擊服務(wù)器。
比如說(shuō),黑客可以在 URL 中添加一個(gè)類似這樣的參數(shù):f=../../../../etc/passwd。這個(gè)參數(shù)會(huì)讓 70.php 讀取根目錄下的 /etc/passwd 文件內(nèi)容并在瀏覽器上展示出來(lái)。如果這個(gè)文件存儲(chǔ)了管理員賬號(hào)密碼,那么黑客就可以獲得服務(wù)器的完全控制權(quán)限。
此外,黑客還可以通過使用這個(gè)文件來(lái)監(jiān)視服務(wù)器上的文件活動(dòng),查看任意文件的內(nèi)容并在 Web 上泄露敏感信息。例如,黑客可以查看用戶上傳的所有文件,包括他們的郵箱、賬戶名及密碼等。
那么,如何避免這些安全風(fēng)險(xiǎn)呢?第一步是刪除 70.php 文件,或?qū)⑵鋸姆?wù)器移走。如果你必須使用它,那么至少要對(duì)它進(jìn)行加固。在代碼中,最重要的防御措施是避免用戶輸入的參數(shù)中包含 ../ 或 ../../ 這樣的字符串。一種常見的方法是使用 PHP 內(nèi)置函數(shù) realpath() 對(duì)參數(shù)進(jìn)行檢查,而不是簡(jiǎn)單地將輸入解碼后傳遞給 file_exists() 函數(shù)。另外,建議在代碼中加入防注入操作和輸入驗(yàn)證。
總之,70.php 文件可能造成嚴(yán)重的安全問題。通過理解其危險(xiǎn)性并采取相關(guān)措施,我們才能夠確保服務(wù)器的安全。