一、解析漏洞
二、繞過上傳漏洞
三、客戶端檢測
四、服務端檢測
五、文本編輯器上傳漏洞
六、上傳漏洞的防禦
接之前的
繼續。
三、客戶端檢測
在客戶端,很多程序員都是通過JavaScript來驗證非法文件。這只是用來提醒用戶避免上傳出錯的,對於惡意攻擊者這些驗證就顯得很低級了。舉個例子:
下面代碼對上傳文件的後綴做檢測,不屬於允許的,將拒絕提交:
這是js代碼,如果文件合法將會提交到upload.php文件,php會將其重命名後上傳到所在的目錄,php代碼如下:
很簡單的一個小功能,來看看繞過方法,下面舉兩個例子:
1,使用FireBug
FireBug是一個瀏覽器插件,支持Firefox,Chrome等。可以輕鬆的調試HTML、JavaScript、AJAX、CSS等前端代碼。但也是黑客常用的利器,怎樣繞過呢?
當單機提交按鈕後,form表單會觸發onsubmit事件,隨後調用checkfile函數來檢測文件是否合法,返回true則提交,否則提示文件不合法。使用firebug刪除onsubmit事件後就可以繞過js的驗證。如下圖:
form標籤中的onsubmit="checkFile()"被刪掉了,這時候js不在有作用,可以上傳任意格式文件。
2,中間人攻擊
使用burpsuite繞過js大家可以先參考下之前介紹的一篇文章,如下:
中間人攻擊與firebug不一樣,firebug是刪除客戶端的js,中間人攻擊是正常提交,只不過在通過客戶端後,與服務器傳輸的過程中將數據攔截進行篡改。
例如我們要上傳一個一句話圖片木馬,圖片格式嚴重通過後,我們攔截將其改為php格式發送給服務器,使用burpsuite攔截如下:
將原來的1.jpg後綴替換為php,替換後放心,成功上傳文件。
總結下就是,客戶端的驗證只是為了防止用戶輸入錯誤的,並不能用來防禦攻擊者,真正防禦還需要在服務器端。
ok,後續內容會繼續補充的。
-----------------------------------------------------------------------------------------------------------------------------
tips:棗樹荒頭條號不定期分享關於網站滲透,信息安全,網絡安全,網絡運維等方面的知識。喜歡的請點一波關注。