文件上傳漏洞之勇闖20層地獄

文件上傳漏洞之勇闖20層地獄


  • 有些喜歡,就是麥田裏曾降臨過的風,只有當事人明瞭,而這的世界假裝沒發生。

簡介:

upload-labs是一個使用php語言編寫的,專門收集滲透測試和CTF中遇到的各種上傳漏洞的靶場。
項目地址:https://github.com/c0ny1/upload-labs

在這裏插入圖片描述

pass-01:

  • 源代碼關鍵點
    客戶端js驗證
    js
  • 主要在客戶端使用js對不合法圖片進行檢查,可以通過burp以及禁用js進行繞過!

在這裏插入圖片描述

pass-02:

  • 源代碼關鍵點
    判斷content-type是否爲圖片格式
    在這裏插入圖片描述
  • 主要在服務端對數據包的MIME進行檢查,修改content-type:image/jpeg即可。

在這裏插入圖片描述

pass-03:

  • 源代碼關鍵點
    禁止上傳以下後綴文件。
    在這裏插入圖片描述
  • 主要在服務端禁止上傳.asp|.aspx|.php|.jsp後綴文件,上傳同類即可。
    在這裏插入圖片描述

在這裏插入圖片描述

pass-04:

  • 源代碼關鍵點
    禁止所有類型文件文件在這裏插入圖片描述
  • 主要在服務端禁止上傳基本上所有類型文件文件,可以利用.htaccess。
    首先上傳.htaccess
    在這裏插入圖片描述然後上傳圖片碼即可。
    在這裏插入圖片描述

pass-05:

  • 源代碼關鍵點
    跟之前一樣,少了這個函數
    /20200309192422717.png)
  • 主要在服務端禁止上傳基本上所有類型文件文件(包括htlaccess),模糊測試發現phP可以繞過。
    在這裏插入圖片描述

pass-06:

  • 源代碼關鍵點
缺少該語句過濾

在這裏插入圖片描述

  • 主要在服務端禁止上傳基本上所有類型文件文件(包括htlaccess),可以在後綴加空格。
  • 在這裏插入圖片描述

pass-07:

  • 源代碼關鍵點
缺少該語句過濾
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200309224053459.png)
  • 主要在服務端禁止上傳基本上所有可執行文件,可以在後綴加<.>,利用window特性繞過。
    在這裏插入圖片描述

pass-08:

  • 源代碼關鍵點
缺少該語句過濾

在這裏插入圖片描述

  • 主要在服務端禁止上傳基本上所有可執行文件,可以在後綴加<::$DATA>,利用window特性繞過。
    在這裏插入圖片描述

pass-09:

  • 源代碼關鍵點
路徑拼接新加的,多組合利用
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/2020030923092692.png)
  • 主要在服務端禁止上傳基本上所有可執行文件,可以在後綴加< . .>,組合利用。
    在這裏插入圖片描述

pass-10:

  • 源代碼關鍵點
把不符合的後綴給替換空,以及推進。
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200309231215940.png)
  • 主要在服務端禁止上傳基本上所有可執行文件,可以在利用雙文件繞過。
    在這裏插入圖片描述

pass-11:

  • 源代碼關鍵點

    保存文件時是將get得到的路徑與隨機數年月日和上傳文件名拼接到一起,所以上傳文件路徑可控,我們將get的路徑最後改爲1.php0x00那麼拼接到後面的內容就會被丟棄。
    在這裏插入圖片描述

  • 主要在服務端白名單,get請求,因此可以利用%00截斷繞過。
    在這裏插入圖片描述

pass-12:

  • 源代碼關鍵點

    跟11一樣,只不過這回是POST請求
    在這裏插入圖片描述

    • 主要在服務端白名單postt請求,因此可以利用00截斷,這次需要在二進制中進行修改,post不會像get對%00進行解碼。
      在這裏插入圖片描述

pass-13/14/15:

  • 源代碼關鍵點
    對文件內容進行過濾,判斷文件相關信息以及文件幻數檢測。

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

    • 上傳圖片馬即可繞過。
      在這裏插入圖片描述
      在這裏插入圖片描述

pass-16:

  • 源代碼關鍵點大部分過濾,以及二次渲染,重新生成圖片
    在這裏插入圖片描述- 上傳圖片馬即可繞過其他,針對於imagecreatefromjpeg函數,原理是上傳一個圖片,然後找二次渲染之後圖片相同代碼部分,然後寫腳本在該處插入惡意代碼。
    上傳修改相同部分的圖片碼,當上傳上去二次渲染之後,還是存在惡意代碼,包含即可

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

pass-17:

  • 源代碼關鍵點
    文件先通過move_uploaded_file進行保存,然後用in_array判斷文件是否爲圖片類型,如果是就用rename進行重命名,如果不是,則使用unlink刪除文件。所以可以利用這個時間差,當文件保存後,就不斷訪問該文件,執行惡意代碼。
    在這裏插入圖片描述
  • 先將惡意文件上傳到服務器,服務器通過rename修改名稱,再通過unlink刪除文件,因此可以通過條件競爭的方式在unlink之前不斷請求該文件,即可生成shell
<?php
fputs(fopen('shell.php',w),'<?php phpinfo();?>');
?>

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

pass-18:

  • 源代碼關鍵點
    跟17相同也是利用條件競爭,但是這回限制白名單,不斷上傳圖片馬,包含即可。
    在這裏插入圖片描述-

pass-19:

  • 源代碼關鍵點
    考的是CVE-2015-2348 move_uploaded_file() 00截斷
    在這裏插入圖片描述
  • 00截斷即可
    在這裏插入圖片描述

pass-20:

  • 源代碼關鍵點
    -通過filename=reset(file_name = reset(file) . ‘.’ . file[count(file[count(file) - 1];可以知道最終的文件名是由數組的第一個和最後一個元素拼接而成,如果上傳不是不是數組,就自己拆成數組,就提供了繞過條件

    在這裏插入圖片描述

    • 上傳數組前面可以利用php,後面jpg繞過
      在這裏插入圖片描述

    餘生很長,請多指教。
    在這裏插入圖片描述

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