日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常见的上传绕过以及解析漏洞

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见的上传绕过以及解析漏洞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 前端繞過
  • 服務端驗證繞過
  • 編輯器漏洞
  • 配合解析漏洞突破上傳
  • 通常一個文件以HTTP協議進行上傳時,將以POST請求發送WEB服務器,WEB服務器接收到請求并同意后,用戶與WEB服務器將建立連接,并傳輸data。

    常見上傳檢測規則
    A. 客戶端javascript檢測(通常為檢測文件拓展名)
    B. 服務端MIME類型檢測(檢測Content-Type內容)
    C. 服務端目錄路徑檢測(檢測跟path參數相關的內容)
    D. 服務端文件名拓展名檢測(檢測跟文件estension相關的內容)
    E. 服務器文件內容檢測(檢測內容是否合法或含有惡意代碼)

    客戶端檢測

    客戶端檢測通常在上傳頁面里含有專門檢測文件上傳的JavaScript代碼。最常見的就是檢測拓展名是否合法。
    判斷方式:
    在瀏覽加載文件,但還未點擊上傳按鈕時便彈出對話框,內容如:只允許上傳.jpg/.jpeg/.png后綴名的文件,而此時并沒有發送數據包。

  • 利用burpswite之類的代理工具。
  • 修改webshell后綴類型為允許上傳類型。
  • 抓包攔截將其后綴名改為對應服務器可以解析的后綴名。
  • 繞過辦法
    服務端MIME檢測服務端MIME類型檢測也就是檢測Content-Type的內容。下面是一段測試模擬代碼:

    我們將request包的Content-Type修改:
    圖片類型:

    服務端目錄路徑檢測

    • 一般是檢測保存路徑是否合法,但一般都沒有防御。檢測跟path參數相關的內容。
    • 漏洞成因是因為對目錄路徑的檢測不夠嚴謹而導致可以用0x00截斷的方式來進行攻擊。
    • 0x00截斷:上傳文件的時候,當系統文件讀到(0x00)時,會認為文件已經結束。利用00截斷就是利用WEB應用對文件上傳的路徑過濾的不嚴格,產生0x00上傳截斷漏洞。

    繞過辦法
    通過抓包截斷將 eval.php.jpg 換成 eval.php_jpg(下劃線為0x00)。在上傳文件時系統文件遇到0x00。會認為文件已經結束。從而將eval.php.jpg的內容寫入到eval.php中。

    $FilePath = C:/wamp/www/uploadfile/eval.php_.jpgmove_uploaded_file($_FILES[“upload_file”][“tmp_name”], $FilePath)

    在執行move_uploaded_file的這個函數時底層操作調用類似于C語言。遇到0x00會自動截斷,真實寫入的地址應該是C:/wamp/www/uploadfile/eval.php

    服務端文件名拓展檢測

    基于黑名單檢測:
    黑名單的安全性比白名單的安全性低很多,攻擊手法自然也比白名單多。一般有個專門的blacklist,里面包含常見的危險腳本文件。

    繞過辦法

  • 文件名大小寫繞過(AsP, pHp等等)
  • 黑白名單繞過(php、php2、php3、php5、phtml、asp、aspx、ascx、ashx、cer、asa、jsp、jspx)cdx,
  • 特殊文件名繞過修改數據包里的文件名改為 test.php. 或者 test.asp_ (下劃線是空格)由于這種命名格式在windows系統里是不允許的。所以在繞過上傳之后windows系統會自動去掉 點和空格。Unix/Linux系統沒有這個特性。
  • 0x00截斷繞過
  • .htaccess文件攻擊(結合黑名單攻擊)
  • 解析繞過
  • 0x00截斷繞過

    文件名后綴就一個%00字節,可以截斷某些函數對文件名的判斷。在許多語言函數中,處理字符串的函數中0x00被認為是終止符。

    例如:
    網站上傳函數處理xxx.php%00.jpg時,首先后綴名是合法的jpg格式,可以上傳,在保存文件時,遇到%00字符丟棄后面的jpg,文件后綴最終保存的后綴名為xxx.php

    .htaccess文件攻擊

    .htaccess文件攻擊即結合黑名單攻擊服務器的 .htaccess文件 。

    通過move_uploaded_file函數把自己寫的 .htaccess文件覆蓋掉服務器上的這樣就可以解析定義名單了。

    .htaccess文件用處:
    通過.htaccess文件調用php解釋器去解析一個文件名中只要包含“haha”這個字符串的任意文件,無論你文件名是什么樣子,只要包含”haha”這個字符串,都可以被以php的方式來解析。

    .htaccess文件內容:

    <FilesMatch “haha”> SetHandler application/x-httpd-php </FilesMatch>

    服務端文件內容拓展檢測

    如果文件內容檢測設置得比較嚴格,那么上傳攻擊將變得非常困難。也可以說它是在代碼層檢測的最后一道關卡。如果它被突破了,就算代碼層的漏洞,也可以結合解析漏洞進行攻擊。

  • 文件幻數檢測 jpg(JFIF) gif(GIF89a) png(%PNG)
  • 文件相關信息檢測(文件頭加一些圖片信息中間夾雜攻擊代碼)
  • 文件加載檢測(調用API或者函數進行文件加載測試 php的 gd庫)
  • 文件幻數檢測繞過
    主要是檢測文件內容開始處的文件幻數,比如圖片類型的文件幻數如下:要繞過jpg文件幻數檢測就要在文件開頭寫上下圖的值:

    gif文件:GIF89a
    png文件:%PNG

    制作圖片馬
    cmd下執行:

    copy /b 1.jpg+2.php=3.jpg

    Apache解析漏洞
    test.php.aaa.bbb.ccc任意不屬于黑名單且不屬于Apache解析白名單之內的后綴名。

    說明
    一個文件名為test.php.aaa.bbb.ccc的文件,Apache會從ccc的位置往php的位置開始嘗試解析 ,如果ccc不屬于Apache能解析的后綴名,那么Apache就會嘗試去解析bbb,這樣一直往前嘗試,直到遇到一個能解析的拓展名為止。

    WampServer2.0All Version (WampServer2.0i / Apache 2.2.11) [Success]
    WampServer2.1All Version (WampServer2.1e-x32 / Apache 2.2.17) [Success]
    Wamp5 All Version (Wamp5_1.7.4 /Apache 2.2.6) [Success]
    AppServ 2.4All Version (AppServ - 2.4.9 /Apache 2.0.59) [Success]
    AppServ 2.5All Version (AppServ - 2.5.10 /Apache 2.2.8) [Success]
    AppServ 2.6All Version (AppServ - 2.6.0 /Apache 2.2.8) [Success]

    IIS 解析漏洞

    • test.asp/任意文件名 | test.asp;任意文件名 | 任意文件名/任意文件名.php

    IIS6.0 在解析 asp 格式的時候有兩個解析漏洞.

  • 一個是如果目錄名包含".asp 、.asa、.cer"字符串,那么這個目錄下所有的文件都會按照 asp 去解析。eg: “test.asp/1.jpg”
  • 另一個是只要文件名中含有".asp;、.asa;、.cer;會優先按 asp 來解析
    eg:
    “1.asp;.jpg”
  • IIS7.0/7.5是對php解析時有一個類似于Nginx的解析漏洞, 對任意文件名只要在URL后面追加上字符串"/任意文件名.php"就會按照 php 的方式去解析
    eg:”http://www.target.com/upload/1.jpg/1.php”

    • IIS6.0 (Win2003 SP2 + IIS6.0) [Success]
    • IIS7.0 (Win2008 R1 + IIS7.0) [Success]
    • IIS7.5 (Win2008 R2 + IIS7.5) [Success]

    Nginx 解析漏洞
    任意文件名/任意文件名.php | 任意文件名%00.php

    目前 Nginx 主要有這兩種漏洞:

    • 一個是對任意文件名,在后面添加/任意文件名.php的解析漏洞,比如原本文件名是 test.jpg,可以添加為 test.jpg/x.php 進行解析攻擊。
      eg: “http://www.target.com/upload/1.jpg/1.php”

    • 一種是對低版本的 Nginx 可以在任意文件名后面添加%00.php進行解析攻擊。
      ? Nginx 0.5.*
      ? Nginx 0.6.*
      ? Nginx 0.7 <= 0.7.65
      ? Nginx 0.8 <= 0.8.37
      ? 以上Nginx容器?的版本下,上傳?一個在waf白名單之內擴展名的?文件1.jpg,然后以1.jpg%00.php進行請求。
      ? Nginx 0.8.41 – 1.5.6:
      ? 以上Nginx容器?的版本下,上傳?一個在waf白名單之內擴展名的?文1.jpg,然后以1.jpg%20%00.php進行請求

    總結

    輕量級的檢測繞過攻擊

    • 繞過javascript對后綴名的檢測
    • 繞過服務端對http requst包MIME類型的檢測
    • 繞過文件內容幻術頭的檢測

    路徑/拓展名檢繞過

    1. 黑名單繞過

    • 文件名大小寫繞過
    • 名單列表繞過
    • 特殊文件名繞過
    • 0x00截斷繞過
    • .htaccess文件攻擊
    • Apache解析漏洞
    • IIS解析漏洞
    • Nginx解析漏洞

    2. 白名單繞過

    • 文件名后綴0x00截斷繞過
    • PHP文件包含漏洞
    • IIS解析漏洞
    • Nginx解析漏洞

    總結

    以上是生活随笔為你收集整理的常见的上传绕过以及解析漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。