
*****
## 文件上傳
### 靶場環境
GitHub地址: https://github.com/c0ny1/upload-labs
### 文件上傳-繞過JS驗證
1.JS驗證代碼分析,在page-1中的index.php
### burpsuite剔除響應JS
對于JS前端驗證,直接刪除掉JS代碼之后就可以繞過JS驗證
### 瀏覽器審計工具剔除JS
利用瀏覽器的審查工具剔除JS之后,保存為新文件然后進行文件上傳
### 文件上傳-繞過MIME-Type驗證
MIME-Type介紹
MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展類型。是設定某種擴展名的文件 用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程 序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。
**常見的MIME類型**
[https://www.jianshu.com/p/50ea483d62b6](https://www.jianshu.com/p/50ea483d62b6)
### 驗證MIME-Type代碼分析
Pass-2中index.php
### burpsuite繞過MIME-Type驗證
利用Burpsuite工具截斷HTTP請求,在Repeater重放修改MIME-Type類型繞過驗證。image/jpeg
### 文件上傳-繞過黑名單驗證
基于文件后綴名驗證介紹
對于文件上傳模塊來說,盡量避免上傳可執行的腳本文件。為了防止上傳腳本需要設置對應的驗證 方式。最簡單的就是設置文件后綴名驗證。
基于文件后綴名驗證方式的分類:
1.基于白名單驗證:只針對白名單中有的后綴名,文件才能上傳成功。
2.基于黑名單驗證:只針對黑名單中沒有的后綴名,文件才能上傳成功
### 基于黑名單驗證代碼分析
對于黑名單中的后綴名篩選。繞過黑名單可以通過尋找“漏網之魚” ,尋找某些可以被作為腳本執行 同時也不在黑名單中。
Pass-3中index.php
### Burpsuite繞過黑名單驗證
利用Burpsuite工具截斷HTTP請求,利用Intruder模塊進行枚舉后綴名,尋找黑名單中沒有過濾的后 綴名。
### 繞過黑名單驗證(大小寫驗證)
大小寫繞過原理
Windows系統下,對于文件名中的大小寫不敏感。例如:test.php和TeSt.PHP是一樣的。
Linux系統下,對于文件名中的大小寫敏感。例如:test.php和 TesT.php就是不一樣的。
### 基于黑名單驗證的代碼分析
只存在于Windows當中,不存在于Linux系統
在Pass-5中的index.php
### WeBaCoo上傳Webshell
1.WeBaCoo生成Webshell: webacoo -g -o a.php
2.上傳Webshell
3.連接Webshell:webacoo -t -u Webshell地址
### 繞過黑名單驗證(空格驗證)
空格繞過原理
Windows系統下,對于文件名中空格會被作為空處理,程序中的檢測代碼卻不能自動刪除空格。從而 繞過黑名單。
針對這樣的情況需要使用Burpsuite截斷HTTP請求之后,修改對應的文件名 添加空格。
### Burpsuite 繞過黑名單驗證
利用Burpsuite工具截斷HTTP請求,對上傳文件名后加空格
### 繞過黑名單驗證(.號繞過)
.號繞過原理
Windows系統下,文件后綴名最后一個點會被自動去除
### Burpsuite 繞過黑名單驗證
利用Burpsuite工具截斷HTTP請求,上傳文件加 . 繞過上傳。
### 生成并上傳Webshe
使用weevely生成Webshell并上傳
1.生成:weevely generate 密碼 路徑 文件名
2.上傳
3.連接:weevely shell文件地址 密碼
### 繞過黑名單驗證(路徑拼接繞過)
路徑拼接繞過原理
在沒有對上傳的文件進行重命名的情況下,用戶可以自定義文件名并在服務器中上傳新建,就會造 成對應的繞過黑名單
例如: 用戶新建 1.php.空格
### 修改文件名 繞過黑名單驗證
在kali Linux下修改文件名,上傳1.php. . 文件
### 繞過黑名單驗證(雙寫繞過)
雙寫繞過原理
代碼編寫過程中,只對黑名單中的內容進行空替換,因為只替換一次所以造成雙寫繞過。
例如: 1.phphpp