Web安全 - 文件上傳漏洞

File Upload

1、原理

一些web應用程序中容許上傳圖片,文本或者其餘資源到指定的位置。
文件上傳漏洞就是利用網頁代碼中的文件上傳路徑變量過濾不嚴將可執行的文件上傳到一個到服務器中,再經過URL去訪問以執行惡意代碼。javascript

圖片描述

2、檢測與繞過

客戶端檢測(Javascript檢測)

在網頁上寫一段Javascript腳本,校驗上傳文件的後綴名,有白名單形式也有黑名單形式。php

繞過方法:
1.直接禁用Javascript實現繞過。
2.先改爲容許上傳的文件類型,而後用Burpsuite改爲腳本文件類型,便可繞過。html

服務端檢測(MINE類型檢測)

MIME (Multipurpose Internet Mail Extensions) 是描述消息內容類型的因特網標準。

繞過:用Burpsuite抓到請求包,更改Content-Type爲容許的類型。java

常見MIMETYPEweb

audio/mpeg -> .mp3
application/msword -> .doc
application/octet-stream -> .exe
application/pdf -> .pdf
application/x-javascript -> .js
application/x-rar -> .rar
application/zip -> .zip
image/gif -> .gif
image/jpeg -> .jpg / .jpeg
image/png -> .png
text/plain -> .txt
text/html -> .html
video/mp4 -> .mp4

服務端檢測(目錄路徑檢測)

對目錄路徑的檢測不夠嚴謹而致使能夠用00截斷進行攻擊
繞過:/123.php%00.gif/123.gif -> /123.phpshell

服務端檢測(文件擴展名檢測)

1.文件名大小寫繞過,如: *.aSP *.AsP
2.名單列表繞過,如:*.asa *.cer
3.特殊文件名繞過 //windows文件名最後不能有.或空格,可設爲 *.php. 或 *.php+
4.0x00截斷繞過 //如:*.php(0x00).jpg 或 *.php%00.jpg
5.文件包含漏洞
6.服務器解析漏洞
7..htaccess文件攻擊
<FileMatch "a.jpg"> SetHandler application/x-httpd-php </FilesMatch>segmentfault

.htaccess文件(或者"分佈式配置文件"),全稱是Hypertext Access(超文本入口)。提供了針對目錄改變配置的方法, 即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以做用於此目錄及其全部子目錄。網頁301重定向、自定義404錯誤頁面、改變文件擴展名、容許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。

服務端檢測(文件內容檢測)

文件幻數檢測(文件開頭)

幻數 magic number,它能夠用來標記文件或者協議的格式,不少文件都有幻數標誌來代表該文件的格式。
.jpg   FF D8 FF E0 00 10 4A 46 49 46
.gif   47 49 46 38 39 61
.png   89 50 4E 47

文件加載檢測

1.對渲染/加載測試的攻擊方式是代碼注入繞過
使用winhex在不破壞文件自己的渲染狀況下找一個空白區進行填充代碼,通常會是圖片的註釋區windows

2.對二次渲染的攻擊方式是攻擊文件加載器自身
若是要對文件加載器進行攻擊,常見的就是溢出攻擊;上傳本身的惡意文件後,服務器上的文件加載器會主動進行加載測試,加載測試時被溢出攻擊執行 shellcode,好比 access/mdb 溢出服務器

3、防護

  1. 文件擴展名服務端白名單校驗。
  2. 文件內容服務端校驗。
  3. 上傳文件重命名。
  4. 隱藏上傳文件路徑。
  5. 限制相關目錄的執行權限,防範webshell攻擊。
相關文章
相關標籤/搜索