亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

PHP安全-文件系統跨越

瀏覽:75日期:2022-09-12 08:01:32
文件系統跨越

無論你用什么方法使用文件,你都要在某個地方指定文件名。在很多情況下,文件名會作為fopen()函數的一個參數,同時其它函數會調用它返回的句柄:

<?php

$handle = fopen(’/path/to/myfile.txt’, ’r’);

?>

當你把被污染數據作為文件名的一部分時,漏洞就產生了:

<?php

$handle = fopen('/path/to/{$_GET[’filename’]}.txt', ’r’);

?>

由于在本例中路徑和文件名的前后兩部分無法由攻擊者所操縱,攻擊的可能性受到了限制。可是,需要緊記的是有些攻擊會使用NULL(在URL中表示為%00)來使字符串終止,這樣就能繞過任何文件擴展名的限制。在這種情況下,最危險的攻擊手段是通過使用多個../來方問上級目錄,以達到文件系統跨越的目的。例如,想像一下filename的值被指定如下:

http://example.org/file.php?file ... nother/path/to/file

與許多攻擊的情況相同,在構造一個字串時如果使用了被污染數據,就會給攻擊者以機會來更改這個字串,這樣就會造成你的應用以你不希望方式運行。如果你養成了只使用已過濾數據來建立動態字串的習慣,就可以防止很多類型包括很多你所不熟悉的漏洞的出現。

由于fopen()所調用的文件名前導的靜態部分是/path/to,所以上面的攻擊中向上跨越目錄的次數比所需的更多。因為攻擊者在發起攻擊前無法察看源碼,所以典型的策略是過多次地重復../字串。../字串使用太多次并不會破壞上面的攻擊效果,所以攻擊者沒有必要猜測目錄的深度。

在上面的攻擊中使fopen()調用以你不希望方式運行,它簡化后等價于:

<?php

$handle = fopen(’/another/path/to/file.txt’, ’r’);

?>

在意識到這個問題或遭遇攻擊后,很多開發者都會犯試圖糾正潛在的惡意數據的錯誤,有時根本不會先對數據進行檢查。正如第一章所述,最好的方法把過濾看成檢查過程,同時迫使使用者遵從你制定的規則。例如,如果合法的文件名只包含字母,下面的代碼能加強這個限制:

<?php

$clean = array();

if (ctype_alpha($_GET[’filename’]))

{

$clean[’filename’] = $_GET[’filename’];

}

else

{

/* ... */

}

$handle = fopen('/path/to/{$clean[’filename’]}.txt', ’r’);

?>

并沒有必要對filename值進行轉義,這是因為這些數據中只用在PHP函數中而不會傳送到遠程系統。

basename( )函數在檢查是否有不必要的路徑時非常有用:

<?php

$clean = array();

if (basename($_GET[’filename’]) == $_GET[’filename’])

{

$clean[’filename’] = $_GET[’filename’];

}

else

{

/* ... */

}

$handle = fopen('/path/to/{$clean[’filename’]}.txt', ’r’);

?>

這個流程比只允許文件名是字母的安全性要差了一些,但你不太可能要求那樣嚴格。比較好的深度防范流程是綜合上面的兩種方法,特別是你在用正則表達式檢查代碼合法性時(而不是用函數ctype_alpha( ))。

當文件名的整個尾部是由未過濾數據組成時,一個高危漏洞就產生了:

<?php

$handle = fopen('/path/to/{$_GET[’filename’]}', ’r’);

?>

給予攻擊者更多的靈活性意味著更多的漏洞。在這個例子中,攻擊者能操縱filename參數指向文件系統中的任何文件,而不管路徑和文件擴展名是什么,這是因為文件擴展名是$_GET[’filename’]的一部分。一旦WEB服務器具有能讀取該文件的權限,處理就會轉向這個攻擊者所指定的文件。

如果路徑的前導部分使用了被污染數據的話,這一類的漏洞會變得甚至更加龐大。這也是下一節的主題。

標簽: PHP
相關文章:
主站蜘蛛池模板: 国模一区二区三区私啪啪 | 欧美亚洲精品在线 | 国产成人啪精品午夜在线观看 | 免费影院在线 | 国产在线观看黄色 | 久久中文字幕网站篠田优 | 97精品国产高清自在线看超 | 在线免费黄色网址 | 高h喷水荡肉爽文np肉色文 | 亚洲成在人线久久综合 | 国产福利专区 | 在线亚洲日产一区二区 | 国产在亚洲线视频观看 | 国产成人精品微拍视频 | 国产伦子一区二区三区四区 | 日韩精品中文字幕视频一区 | 国产精品久久久久9999小说 | 成人免费视频网 | 亚洲精品午夜一区二区 | 日本大片成人免费播放 | 日韩一级黄色影片 | 免费大片a一级一级 | 精品视频一区二区三区四区五区 | 久久毛片免费看 | 国产亚洲精品久久久极品美女 | 亚洲精品www | 亚洲一区综合 | 大香萑75久久精品免费 | 精品小视频 | 久久超级碰 | 黄色香蕉视频 | 97久久久久国产精品嫩草影院 | 制服丝袜日韩欧美 | 999精品视频 | 天天做天天爱天天影视综合 | 免费视频a| 国产成人精品视频播放 | 91小视频在线观看 | 国产亚洲三级 | 欧美亚洲日本一区二区三区浪人 | 亚洲精品亚洲人成在线观看麻豆 |