首頁  >  文章  >  科技週邊  >  淺談權限取得方法之檔上傳

淺談權限取得方法之檔上傳

王林
王林轉載
2023-04-09 09:11:031096瀏覽

概述

檔案上傳漏洞是發生在有上傳功能的應用程式中,如果應用程式對使用者上傳檔案沒有控製或有缺陷,攻擊者可以利用應用程式上傳功能的缺陷,上傳木馬、病毒等有危害的文件到伺服器上面,控制伺服器。

漏洞成因及危害

檔案上傳漏洞產生的主要原因是:應用程式中存在上傳功能,但是上傳的檔案沒有經過嚴格的合法性檢驗或檢驗函數有缺陷,導致可以上傳木馬文件到伺服器。文件上傳漏洞危害極大因為可以直接上傳惡意程式碼到伺服器上,可能會造成伺服器的網頁篡改、網站被掛馬、伺服器被遠端控制、被安裝後門等嚴重的後果。

下面我們就檔案上傳的幾種驗證及繞過方法:

1.本地驗證(前端驗證)

前端JS過濾繞過上傳漏洞是因為應用程式是在前端透過JS程式碼進行的驗證,而不是在程式後端進行的驗證,這樣就可以透過修改前端JS程式碼的方式進行繞過上傳過濾,上傳木馬。

那麼如何判斷是否為前端驗證呢?我個人覺得我們可以看在進行上傳抓包的時候是否能到資料包,是否有資料流過,或者可以看上傳圖片是否頁面會顯示上傳的圖片地址等。

繞過:將過濾程式碼刪除,修改或停用Javascript。

2.後端驗證及繞過

文件上傳常見驗證:後綴名(直接驗證),文件,文件頭(間接驗證)。

2.1 後綴名

2.1.1 黑名單(明確不允許上傳的腳本格式後綴)

檔案名稱過濾繞過漏洞主要是因為透過黑名單的方式判斷了文件上傳的類型,而且並沒有完整的過濾,導致攻擊者透過上傳黑名單類型以外的文件。

黑名單判斷方法:上傳文件,系統提示不允許上傳xxx格式檔案。

繞過:使用其他格式(php5,Phtml,php3)或檔案大小寫,同時也可以加入一些幹擾符號實作繞過。

2.1.2 .htaccess(偽靜態協定)-重寫解析(Apache才有並且開啟偽靜態模組)

.htaccess檔案上傳是利用.htaccess檔案可以對Web伺服器設定的功能,實作對jpg、png等後綴的檔案當做PHP檔案解析的過程。

.htaccess檔案(分散式設定檔)提供了一種基於每個目錄進行設定變更的方法,包含一個或多個設定指令的檔案放在特定的文件目錄中,檔案中的指令適用於該目錄及其所有子目錄。 .htaccess是Web伺服器的一個設定文件,可以透過.htaccess檔案實現Web伺服器中的定義檔的解析方式、重定向等設定。

繞過方法:先上傳1.htaccess檔。 2.再上傳圖片馬。

2.1.3 空格繞過

繞過方法:封包中檔案後綴名後加上一個空格實作繞過。

2.1.4 .繞過

繞過方法:跟空格繞過方法類似,封包中檔案後綴名後加一個.實作繞過。

2.1.5 ::$data繞過

這是windows特有的一種協議,在window的時候如果檔案名稱"::$DATA"會把::$DATA之後的資料當成檔案流處理,不會偵測後綴名,且保持::$DATA之前的檔案名,他的目的就是不檢查後綴名。

2.1.6 循環過濾

繞過:程式碼將字串裡的php替換為空。

如:a.pphphp 會變成->a.

2.1.7 白名單:明確可以上傳的格式後綴(更安全)

#

3.文件類型驗證

3.1 文件頭檢測:文件頭內容資訊(如gif89a)

不同的文件都有特定的文件頭格式,開發者透過檢查上傳文件的文件頭檢測文件類型,但是這種檢測方式同樣可以被繞過,只要在木馬文件的頭部添加對應的文件頭,這樣既可以繞過檢測又不影響木馬文件的正常運行。

常見的檔案頭如下:

JPEG  0xFFD8FF

PNG0   x89504E470D0A1A0A

GIF    47 49 4638 39 61(#GIF    47 49 4638 39 61(GIF8#過方法:

更改頭部資訊達到欺騙,如在木馬的頭檔中添加圖片檔案的檔案頭即可繞過偵測。
  • GIF89a

?>

製作圖片馬
  • 直接在圖片中插入一句話木馬,進行上傳。 ———利用文件包含原理。

使用cmd指令將一張正常圖片 1.jpg 與一個包含一句話木馬的 a.txt文件,合成一個新的test.php木馬文件。

cmd 指令:copy 1.jpg/b a.txt test.php。

3.2  Content-Type偵測

Content-Type用於定義網路檔案的類型和網頁的編碼,用來告訴檔案接收者將以什麼形式、什麼編碼讀取這個檔案。不同的檔案都會對應的不同的Content-Type,例如jpg檔案的Content-Type為image/jpeg,php檔案的Content-Type為application/octet-stream。 Content-Type是在封包的請求包頭中,開發者會通Content-Type的類型判斷檔案是否允許上傳。

繞過:Content-Type的類型可以透過抓包來竄改,這樣就可以透過抓包修改封包的Content-Type來繞過Content-Type判斷。

MIME:可以透過判斷類型猜測檔案後綴名,利用抓包工具將Content-Type進行篡改,如改為image/pjpeg、image/jpeg、image/gif、image/png四個中的一個即可繞過過濾。

4. 內容及其他

4.1 邏輯安全:條件競爭(相當於系統佔用)

定義:競爭條件是指多個執行緒在沒有進行鎖定操作或同步操作同時存取同一個共享程式碼、變數、檔案等,運行的結果依賴不同執行緒存取資料的順序。先將檔案上傳到伺服器,伺服器依照規則對圖片選擇保存與刪除,漏洞點在於檔案在儲存到伺服器之前並沒有進行合法性的檢查,雖然儲存後進行了檔案的檢查,但是透過競爭條件漏洞,透過上傳有寫入檔案功能的木馬,在刪除木馬之前造訪已經上傳的木馬,就可以寫入新的木馬。

繞過:將文件上傳到伺服器後,我們就不斷進行文件路徑訪問,由於條件競爭,就會達到上傳Webshel​​l的目的,漏洞利用就是發送請求通過不斷上傳內容,這樣的訪問會產生新的木馬文件,然後再發送另一個請求不斷存取此文件,如果競爭條件漏洞利用成功就會產生新的木馬。

4.2 目錄命名 

繞過:透過新增/.後綴讓伺服器辨識檔案為資料夾形式,達到上傳的目的,如-x.php/.

5.其他漏洞

腳本函數漏洞-cve

CVE-2017-12615 

CVE-2015-5254

CVE-2019-2618

......

這些漏洞網路上都有利用教程,有興趣的師傅可以去查閱一下資料。

6.中間件解析漏洞

6.1 IIS 6.0 解析漏洞

解析漏洞快速判斷,/.php看是否有亂碼,有則存在,無則不存在。

6.1.1 以資料夾執行

正常檔案名稱:image/aa.jpg。

繞過:image.asp/aa.jpg  aa.jpg就會被當作asp解析。

6.1.2 以檔案執行

正常檔案名稱:image.jpg。

繞過:image.asp;.jpg或xxx.asp;xxx.jpg 此檔案會當作asp執行。

asp可以換做php 如果換了php,那麼就可以當作php執行。

7.WAF繞過

要繞過WAF,我們需要了解哪些參數可以修改,如:

Content-Disposition:一般可修改。
  • name:表單參數值,不能修改。
  • filename:檔名,可以修改。
  • Content-Type(檔案自帶類型):檔案MIME,視情況變更。
  • waf繞過的核心就是在可以修改的參數名稱後不斷修改測試,嘗試繞過。
  • 常見繞過方法:

7.1 資料溢出(垃圾資料填充)

利用WAF偵測上限,增加大量垃圾數據,讓其匹配不到,類似溢位漏洞,一般可在上傳參數後面加入乾擾數據,垃圾數據和參數之間要記得新增;,否則封包會報錯。

7.2 符號變異('";)

利用程式開發漏洞,對資料包中上傳參數中的符號進行替換,新增、刪除,達到上傳目的。如

如x.jpg;.php 分號代表一個資料的結束。

7.3資料截斷(

以上是淺談權限取得方法之檔上傳的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除