天天看點

Upload-Labs滲透筆記

靶機項目位址:https://github.com/c0ny1/upload-labs

來源:https://www.cnblogs.com/joker-vip/p/12650240.html

Pass-01

1.直接上傳php一句話,報錯

Upload-Labs滲透筆記

2.資訊回顯速度很快,猜想是前端驗證,可以在修改前端代碼,删掉checkFile()函數,或者上傳jpg字尾通過burp抓包修改php字尾繞過前端驗證

Upload-Labs滲透筆記

3.上傳成功

Upload-Labs滲透筆記

4.菜刀連接配接成功

Upload-Labs滲透筆記

5.分析源碼

Upload-Labs滲透筆記

Javascript前端語言定義函數,僅在前端判斷檔案的字尾。

Pass-02

1.直接上傳,發現提示檔案類型不正确

Upload-Labs滲透筆記

2.抓包修改檔案類型,改成image/jpeg

Upload-Labs滲透筆記

3.改成image/jpeg

Upload-Labs滲透筆記

4.發包,上傳成功

Upload-Labs滲透筆記

5.菜刀連接配接成功

Upload-Labs滲透筆記

6.分析源碼

Upload-Labs滲透筆記

僅這條if語句判斷了上傳檔案的類型,修改Content-Type即可繞過。

Pass-03

1.直接上傳,提示

Upload-Labs滲透筆記

2.猜想可能是黑名單限制,利用其它字尾名進行繞過php3、phtml

Upload-Labs滲透筆記

3.上傳成功,菜刀連接配接成功

Upload-Labs滲透筆記

4.分析源碼

Upload-Labs滲透筆記

建立了個黑名單,其中的字尾都不能上傳。但是其它可解析php的字尾可以上傳并解析。

Pass-04

Upload-Labs滲透筆記

2.嘗試利用apache解析漏洞,apache讀取字尾從右向左,若遇見不認識的字尾名便向前繼續讀取,直到認識的字尾。

Upload-Labs滲透筆記

3.上傳成功,連接配接菜刀成功

Upload-Labs滲透筆記

4.方法二,其實這關考察的目的是 .htaccess檔案,上傳一個.htaccess内容如下的檔案:

SetHandler application/x-httpd-php

Upload-Labs滲透筆記

5.這樣所有檔案都會解析為php,然後再上傳圖檔馬,就可以解析:

Upload-Labs滲透筆記

6.連接配接菜刀成功

Upload-Labs滲透筆記

7.分析源碼

Upload-Labs滲透筆記

這裡把所有的字尾都過濾了,除了.htaccess,是以可以利用上傳.htaccess規則來進行繞過,把可以上傳的檔案字尾解析成php。

Pass-05

Upload-Labs滲透筆記

2.上傳.htaccess失敗,可能也把.htaccess給過濾了,嘗試使用apache解析漏洞繞過

Upload-Labs滲透筆記

3.連接配接菜刀成功

Upload-Labs滲透筆記

4.其實這題考察的是大小寫繞過,

Upload-Labs滲透筆記
Upload-Labs滲透筆記

在上一題pass-04的基礎上多了個過濾.htaccess,但是沒有對字尾的大小寫進行統一,這裡于是可以通過大小寫繞過。

Pass-06

1.直接上傳失敗,加空格繞過

Upload-Labs滲透筆記

2.上傳成功

Upload-Labs滲透筆記

3.菜刀連接配接成功

Upload-Labs滲透筆記

4.源碼分析

Upload-Labs滲透筆記

還是黑名單,但是沒有對字尾名進行去空處理,可在字尾名中加空繞過。

Pass-07

1.嘗試利用windows特性,會自動去掉字尾名中最後的 . ,抓包,在字尾加 .

Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記

同樣是黑名單,但是沒有對字尾名進行去 . 處理,利用windows特性,會自動去掉字尾名中最後的 . ,可在字尾名中加 . 繞過。

Pass-08

1.嘗試使用 ::$DATA 加在字尾之後進行繞過

Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記

php在window的時候如果檔案名+"::$DATA"會把::$DATA之後的資料當成檔案流處理,不會檢測字尾名.且保持"::$DATA"之前的檔案名,目的就是不檢查字尾名。

Pass-09

1.通過嘗試構造,加上點空格點繞過

Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記

還是黑名單過濾,并删掉了檔案名末尾的點,路徑拼接的是處理後的檔案名,通過構造 點+空格+點 繞過過濾。

Pass-10

1.直接上傳發現把字尾php替換為空

Upload-Labs滲透筆記

2.這樣可以使用雙寫繞過

Upload-Labs滲透筆記
Upload-Labs滲透筆記

4.連接配接菜刀成功

Upload-Labs滲透筆記
Upload-Labs滲透筆記

設定黑名單,把有問題的字尾名都替換為空,但是可以利用雙寫繞過。

Pass-11

Upload-Labs滲透筆記

2.應該是用到了白名單,抓包檢視,嘗試使用%00截斷進行繞過

Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記

白名單機制,但是$img_path直接拼接,是以可以利用%00截斷繞過。

Pass-12

1.上傳抓包檢視,可以使用00截斷,php後空格十六進制的20改為00

Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記

同樣是白名單,這次的save_path是通過post傳進來的,還是利用00截斷,但這次需要在二進制中進行修改,因為post不會像get對%00進行自動解碼

Pass-13

1.制作圖檔馬,copy 1.jpg /b + shell.php /a webshell.jpg

Upload-Labs滲透筆記

2.上傳圖檔馬

Upload-Labs滲透筆記
Upload-Labs滲透筆記
Upload-Labs滲透筆記

通過讀檔案的前2個位元組判斷檔案類型,是以直接上傳圖檔馬即可。也可以在一句話檔案内容前面加圖檔的辨別例如GIF89a。

Pass-14

1.同樣直接上傳圖檔馬

Upload-Labs滲透筆記
Upload-Labs滲透筆記

3.分析源碼

Upload-Labs滲透筆記

這裡使用getimagesize函數擷取檔案類型,還是直接就可以利用圖檔馬就可進行繞過。也可以在一句話檔案前加圖檔辨別碼例如GIF89a。

Pass-15

1.同樣可以使用圖檔馬上傳

Upload-Labs滲透筆記
Upload-Labs滲透筆記

3.源碼分析

Upload-Labs滲透筆記

這裡是用php_exif子產品來判斷檔案類型,還是直接就可以利用圖檔馬就可進行繞過。

Pass-16

1.直接上傳圖檔馬

Upload-Labs滲透筆記

2.成功上傳

Upload-Labs滲透筆記
Upload-Labs滲透筆記

綜合判斷了字尾名、content-type,以及利用imagecreatefrompng

判斷是否為png圖檔,最後再做了一次二次渲染。

Pass-17

1.提示代碼審計,是以先分析下源碼

Upload-Labs滲透筆記

這裡先将檔案上傳到伺服器,然後判斷檔案字尾是否在白名單裡,如果在則重命名,否則删除,是以我們可以上傳1.php隻需要在它删除之前通路即可,可以利用burp的intruder子產品不斷上傳,然後我們不斷的通路重新整理該位址即可。

2.抓包轉到intruder子產品,進行不斷上傳

Upload-Labs滲透筆記

3.在不斷上傳的中,不停重新整理浏覽器位址,即可通路到檔案内容

Upload-Labs滲透筆記

Pass-18

1.通過代碼審計,這個對檔案字尾名做了白名單判斷,然後會一步一步檢查檔案大小、檔案是否存在等等,将檔案上傳後,對檔案重新命名,同樣存在條件競争的漏洞。可以不斷利用burp發送上傳圖檔馬的資料包,由于條件競争,程式會出現來不及rename的問題,進而上傳成功

Upload-Labs滲透筆記

2.通過條件競争,圖檔馬來不及改名就上傳了

Upload-Labs滲透筆記

3.用檔案包含檢視檔案

Upload-Labs滲透筆記

Pass-19

1.源碼審計,發現move_uploaded_file()函數中的img_path是由post參數save_name控制的,是以可以在save_name利用00截斷繞過

Upload-Labs滲透筆記
Upload-Labs滲透筆記

3.檔案執行成功

Upload-Labs滲透筆記

Pass-20

1.代碼審計

Upload-Labs滲透筆記

2.通過上傳一個php檔案,改包

Upload-Labs滲透筆記