不安全的檔案上傳漏洞概述:
檔案上傳功能在web應用系統很常見,比如很多**註冊的時候需要上傳頭像、上傳附件等等。當使用者點選上傳按鈕後,後台會對上傳的檔案進行判斷 比如是否是指定的型別、字尾名、大小等等,然後將其按照設計的格式進行重新命名後儲存在指定的目錄。 如果說後台對上傳的檔案沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊著可能會上傳一些惡意的檔案,比如一句話木馬,從而導致後台伺服器被
webshell
。 所以,在設計檔案上傳功能時,一定要對傳進來的檔案進行嚴格的安全考慮。比如:
--驗證檔案型別、字尾名、大小
;--驗證檔案的上傳方式
;--對檔案進行一定複雜的重新命名
;--不要暴露檔案上傳後的路徑
;檔案上傳漏洞測試流程:
檔案上傳漏洞之客戶端驗證(client check)
首先我們先嘗試上傳乙個php檔案;
可以看到,上傳失敗;
檢視前端**,發現使用了乙個checkfileext(),實際上就是判斷上傳的檔案是否是的格式,如果不是就會彈出相應的框;
我們將onchange裡面的內容刪掉,在選擇乙個一句話木馬檔案上傳,就可以上傳成功;
在實際操作中,我們需要上傳檔案的路徑,才可以獲取相應的東西;
不安全的檔案上傳漏洞-服務端驗證
mime類:
mime(multipurpose internet mail extensions)多用途網際網路郵件擴充套件型別。是設定某種
副檔名的
檔案用一種
應用程式
來開啟的方式型別,
當該副檔名檔案被訪問的時候,
瀏覽器會自動使用指定應用程式來開啟。多用於指定一些
客戶端自定義
的檔名,以及一些**檔案開啟方式。
每個mime型別由兩部分組成,前面是資料的大類別,例如聲音
audio
、圖象image
等,後面定義具體的種類。
常見的mime型別,比如:
$_files()函式:
上傳jpg檔案,可以看到上傳成功;
上傳php檔案,可以看到上傳失敗;
檢視原始碼可知,這定義了乙個陣列,
然後我們對上傳檔案正確的進行抓包;
上傳一句話木馬進行抓包;
傳送到repeater 然後將
content type
改為image/jpeg
然後點選go,可以看到檔案上傳成功的路徑;
在實際操作中,我們可以訪問此路徑獲取相應資訊;
getimagesize類:
getimagesize()返回結果中有檔案大小和檔案型別,如果用這個函式來獲取型別,從而判斷是否是的話,會存在問題。
1.直接偽造頭部
gif89a
2.我們可以製作馬;在桌面上建乙個
1.png
和1.php
;開啟cmd 輸入命令
copy /b 1.png + 1.php 2.png
馬製作好之後就可以成功的上傳返回路徑;
檔案上傳漏洞防範措施
執行緒不安全
背景 執行緒不安全 sleep 模擬網路延遲 後多執行緒併發訪問同乙個資源 方法1 同步 塊 語法 synchronized 同步鎖 catch interruptedexception e 方法2 同步方法 使用synchronizd修飾的方法,就叫同步方法,保證a執行緒執行該方法的時候,其他執行...
執行緒安全與不安全
list介面下面有兩個實現 乙個是arraylist 另外乙個是vector 從原始碼的角度來看 vector的方法前加了,synchronized 關鍵字,也就是同步的意思,sun公司希望vector是執行緒安全的,而希望arraylist是高效的,缺點就是另外的優點。在 items size 的...
執行緒安全 不安全
hashmap 執行緒不安全 可以用concurrenthashmap,arraylist也有concurrent hashtable 執行緒安全,給每個方法都加上了synchronnized關鍵字。和concurrenthashmap的區別是加鎖粒度不同,不是很懂。stringbuilder 執行...