CTF從入門到提升(九)文件上傳以及相關例題分享

文件上傳主要是配合一些漏洞的利用,普遍意義上的文件上傳是指將信息從個人計算機傳送至中央計算機,也就是我們所說的遠程計算機,對站點來說,就是傳到運行網站的服務器上。一般網站都有自己的邏輯,比如在網站的註冊頁面,你想要上傳個頭像,網站只需要你上傳頭像,而不是傳其他類型的文件。

   CTF上傳文件的目的是get shell,我們最終目的是拿到題目的flag,如果說存在一個上傳的地方,很有可能它的目的就是通過上傳的方式作爲輔助或最終的方式去get shell。 上傳文件會做一些防護來我們進行干擾,所以需要掌握常見的文件上傳的安全檢測方式。針對文件上傳檢測的方式如何做一個繞過?

客戶端校驗——JavaScript

首先來看一下最簡單的客戶端校驗,文件上傳是文件從本地到傳輸到遠程服務器,中間經過了三個步驟,在你的客戶端(自己電腦)本身做一個文件檢測,或者文件傳到後端服務器之後,在後端服務器上對文件做檢測,簡單的就是客戶端校驗JavaScript校驗。文件是在網頁做上傳,所以javascript就會在你的瀏覽器上運行。這裏有一些js代碼及註釋,方便大家對文件作出判斷:

在這裏插入圖片描述

校驗邏輯儘管很複雜,如果它的代碼無法運行這個檢測是不是就沒有意義了可以直接繞過。

  • 禁用js

比如說我上傳一個文件,執行後系統提示:

在這裏插入圖片描述
在這裏插入圖片描述

我們看到這個彈窗就可以判斷出代碼是運行本地還是遠程,不確定的話可以打開開發者模式去看它的校驗是存在於本地,我們可以禁用js。

在這裏插入圖片描述
我一般喜歡用一些插件比如yesscript2,瀏覽器本身也是可以直接設置的。 使用插件後就可以上傳成功了。

在這裏插入圖片描述

抓包改包
jpg結尾的文件是可以上傳的,在文件發出的過程中,我們可以把包給截住從而繞過審覈。我們按照剛纔的圖片上傳方法試一遍:
在這裏插入圖片描述

如圖顯示,已經跳過js驗證環節,把jpg改成php上傳成功。

在這裏插入圖片描述
在這裏插入圖片描述

服務器端校驗——content-type字段校驗

在這裏插入圖片描述
在這裏插入圖片描述

在傳文件的時候它會顯示你傳的文件類型,確定你傳上去的文件是什麼。如果在後端做判斷,它會檢測文件名的字段,因爲這個數據包我們能抓到,所以發出去的數據我們也可以做修改。改數據的前提條件是,要知道我們去改什麼內容,這裏列了一些常見的文件類型:

在這裏插入圖片描述
在這裏插入圖片描述

上傳時把文件名改成上面對應的MIME擴展名,瀏覽器就會根據你上傳的文件名來做判斷,再抓包然後再把文件名改回去就可以了。構造成一個發出請求的數據包,它的type字段是正確的就可以。

服務器端校驗——後綴黑名單校驗

判斷後綴名
黑名單校驗就是不允許一些文件類型上傳,和js代碼有點類似,js是隻允許一些文件可以上傳。黑名單禁止的時候只能禁止一部分,會受限於開發者本身的知識量比如漏掉一些那種後綴名,導致存在一些可以突破的後綴名做解析。

獲取文件後綴名,去檢測後綴名是否在數組中,如下圖,後綴名是php或php3就會禁止上傳,結束退出。代碼邏輯其實很簡單,那麼你要突破的時候,第一種第一種方法去突破不在黑名單裏的後綴名就能解析到;
在這裏插入圖片描述

還有一種思路去對抗檢測函數,這個函數是獲取後綴名,如果是php的那可以換成其他 比如jpg。

  • 繞過方法

在這裏插入圖片描述

通過配置文件,我們是能夠知道哪些文件能解析,哪些文件不能解析。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
黑名單會受限於開發者的一個問題,我們可以利用這些方式去做繞過。

  • 配合Apache的.htaccess文件上傳解析

在這裏插入圖片描述
在這裏插入圖片描述

目錄中文件可以被解析,如果把文件名改成jpg再去讀下這個目錄,會認爲這是張圖片,不會被解析:
在這裏插入圖片描述

這種情況可以嘗試去傳改.htaccess,

在這裏插入圖片描述

文件傳上去之後,不需要去重啓服務器和中間件,傳上去做解析會立即生效。

  • 使用00截斷

在這裏插入圖片描述

先獲取文件名,然後再把文件名保存下來。

舉栗子:

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
如果文件名被截斷,我們可以給文件名做修改
在這裏插入圖片描述
在這裏插入圖片描述
以上內容參考安全牛課堂《CTF從入門到提升

課程地址:https://www.aqniukt.com/my/course/8954​​​​​​​​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章