文件上傳漏洞-客戶端是怎樣檢測和繞過的(三)

網絡安全 編程語言 信息安全 PHP 棗樹荒 2017-06-08
  • 一、解析漏洞

  • 二、繞過上傳漏洞

  • 三、客戶端檢測

  • 四、服務端檢測

  • 五、文本編輯器上傳漏洞

  • 六、上傳漏洞的防禦

接之前的

Web安全-文件上傳漏洞(一)

Web安全之繞過上傳漏洞(二)

繼續。

三、客戶端檢測

在客戶端,很多程序員都是通過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大家可以先參考下之前介紹的一篇文章,如下:

BurpSuite繞過JS驗證

中間人攻擊與firebug不一樣,firebug是刪除客戶端的js,中間人攻擊是正常提交,只不過在通過客戶端後,與服務器傳輸的過程中將數據攔截進行篡改。

例如我們要上傳一個一句話圖片木馬,圖片格式嚴重通過後,我們攔截將其改為php格式發送給服務器,使用burpsuite攔截如下:

文件上傳漏洞-客戶端是怎樣檢測和繞過的(三)

將原來的1.jpg後綴替換為php,替換後放心,成功上傳文件。

總結下就是,客戶端的驗證只是為了防止用戶輸入錯誤的,並不能用來防禦攻擊者,真正防禦還需要在服務器端。

ok,後續內容會繼續補充的。

-----------------------------------------------------------------------------------------------------------------------------

tips:棗樹荒頭條號不定期分享關於網站滲透,信息安全,網絡安全,網絡運維等方面的知識。喜歡的請點一波關注。

相關推薦

推薦中...