網站提供上存功能是很多站點經常會有功能商城論壇還有常見一些網盤站點常見互聯網上面我們也是經常聽說某某站點出現上存漏洞某某開源項目有 上存漏洞 從互聯網開始出現動態程序上存漏洞像幽靈一樣頻繁的出現在各種系統中為什麼一個上存漏洞會這麼頻繁出現呢而且有些系統反復修補多次還沒有修 補成功!其實主要問題還是出現在上存原理上面我們先看看上存過程
網站上存過程分析
復制代碼 代碼如下:
<?php
header("Content
type: text/html; charset=utf
");
if($_FILES)
{
echo
<pre>
;
var_dump($_FILES);
echo
</pre>
;
}
?>
<form action="" enctype="multipart/form
data" method="POST">
<input type="file" name="txt" size="
">
<input name="Submit" type="submit" value="提交" >
</form>
以上是個簡單測試例子我們看看
我們來分析下
name來自 上存時候選擇文件名稱
type 是文件類型 這個類型那裡來的呢?呵呵這裡非常關鍵的 很多時候很多同人會認為這個是服務器自動判斷生成的 如果是這樣想覺得也有可能 php 封裝了上存它自帶類庫好像可以的 但是反過來想想你隨便選擇個什麼格式文件都會有格式類型這樣一想我們推斷這個值可能也來自用戶輸入的 我們來抓包看看我們類型
type值 也來自用戶輸入值了
size來自程序計算上存文件大小這個是自動計算的 相比我們都清楚的
你說這麼多有啥樣呢?
想 必有朋友開始問了我上面分析上存文件格式 跟開發出現漏洞有什麼關聯呢 其實我們想想上面說的一個文件名稱name屬性以及文件類型type屬性 在我們上存文件後端處理時候會經常用到的 作為開發者在使用這個變量一定要繼續執行“一切輸入代碼是有害的”原則你在使用時候要把它當作跟其它getpost 獲取變量一樣處理 要檢測過濾一切輸入變量
我們經常做功能是限定用戶輸入必須是某種格式文件然後保存為該格式分析到這裡下面有很多需要繼續分析地方今天先提出大綱接下來會分析這樣常見類上存漏洞
使用用戶文件名生成文件特殊字符過濾不嚴格導致文件生成出現漏洞
移動文件目錄時候由於采用用戶傳入的文件名拼接生成到錯誤目錄
相信用戶輸入type 類型直接將用戶文件名保存為文件
From:http://tw.wingwit.com/Article/program/PHP/201311/21137.html