upload-labs通關筆記-第4關 文件上傳之.htacess繞過

目錄

一、.htacess

二、代碼審計

三、php ts版本安裝

1、下載ts版本php

2、放入到phpstudy指定文件夾中

3、修改php配置文件

4、修改php.ini文件

5、修改httpd.conf文件

(1)定位文件

(2)修改文件

6、重啟小皮

7、切換ts版本php?

四、滲透實戰

1、構造.htacess文件

2、構造圖片文件

3、上傳.htacess和圖片文件

4、獲取圖片地址

5、訪問腳本


本文通過《upload-labs靶場通關筆記系列》來進行upload-labs靶場的滲透實戰,本文講解upload-labs靶場第四關文件.htacess滲透實戰。

一、.htacess

.htaccess 是 Apache 服務器的分布式配置文件,全稱是Hypertext Access(超文本入口)。.htaccess 是 Apache 服務器的分布式配置文件,全稱是Hypertext Access(超文本入口)。.htaccess 文件提供了針對目錄改變配置的方法, 即,在一個特定的文檔目錄中放置一個包含一個或多個指令的文件, 以作用于此目錄及其所有子目錄。

.htaccess 文件能夠對 Apache 服務器的特定目錄進行配置,借助它可以修改文件類型的解析規則。所以,若成功上傳一個惡意的 .htaccess 文件,就可以讓服務器把其他后綴的文件當作 PHP 文件來解析,進而實現文件上傳htacess繞過。

二、代碼審計

打開文件上傳靶場的第4關,查看源碼并分析,如下所示代碼使用黑名單方法檢測腳本,雖然包含多種變體(".php", ".php5", ".php4", ".php3", ".php2", ".php1", ".html", ".htm", ".phtml", ".pht", ".pHp", ".pHp5", ".pHp4", ".pHp3", ".pHp2", ".pHp1", ".Html", ".Htm", ".pHtml", ".jsp", ".jspa", ".jspx", ".jsw", ".jsv", ".jspf", ".jtml", ".jSp", ".jSpx", ".jSpa", ".jSw", ".jSv", ".jSpf", ".jHtml", ".asp", ".aspx", ".asa", ".asax", ".ascx", ".ashx", ".asmx", ".cer", ".aSp", ".aSpx", ".aSa", ".aSax", ".aScx", ".aShx", ".aSmx", ".cEr", ".sWf", ".swf", ".ini"),但可能遺漏新的危險擴展名(如.htacess等)。

<?php
// 初始化上傳狀態和消息變量
$is_upload = false;  // 標記文件是否上傳成功
$msg = null;         // 存儲上傳過程中的錯誤信息// 檢查用戶是否提交了表單(點擊了上傳按鈕)
if (isset($_POST['submit'])) {// 檢查上傳目錄是否存在if (file_exists(UPLOAD_PATH)) {// 定義禁止上傳的文件擴展名黑名單(包含各種大小寫變體)$deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",  // PHP相關擴展".html",".htm",".phtml",".pht",                   // HTML相關".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",   // PHP大小寫變體".Html",".Htm",".pHtml",                          // HTML大小寫變體".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",  // JSP相關".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml", // JSP大小寫變體".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer", // ASP相關".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr", // ASP大小寫變體".sWf",".swf",                                    // Flash文件".ini"                                            // 配置文件);// 獲取上傳文件名并處理$file_name = trim($_FILES['upload_file']['name']);  // 去除首尾空格$file_name = deldot($file_name);    // 刪除文件名末尾的點(防止file.php.繞過)$file_ext = strrchr($file_name, '.');  // 獲取文件擴展名(從最后一個點開始)$file_ext = strtolower($file_ext);     // 轉換為小寫統一比較$file_ext = str_ireplace('::$DATA', '', $file_ext); // 去除NTFS備用數據流::$DATA$file_ext = trim($file_ext);           // 去除擴展名首尾空格// 檢查擴展名是否在黑名單中if (!in_array($file_ext, $deny_ext)) {// 獲取上傳臨時文件路徑$temp_file = $_FILES['upload_file']['tmp_name'];// 構造目標路徑(直接使用原始文件名,存在安全隱患)$img_path = UPLOAD_PATH.'/'.$file_name;// 移動上傳文件到目標位置if (move_uploaded_file($temp_file, $img_path)) {$is_upload = true;  // 標記上傳成功} else {$msg = '上傳出錯!';  // 文件移動失敗(可能是權限問題)}} else {$msg = '此文件不允許上傳!';  // 文件類型被禁止}} else {$msg = UPLOAD_PATH . '文件夾不存在,請手工創建!';  // 上傳目錄不存在}
}
?>

由于.htaccess后綴的文件本關卡沒有在黑名單種,故而可以通過上傳.htacess文件利用文件解析規則繞過,舉個例子,.htaccess文件內容如下所示。

<FilesMatch "test4.jpg">SetHandler application/x-httpd-php
</FilesMatch>

在將.htaccess文件上傳到服務器后,再上傳一個test4.jpg文件(文件內容為php腳本),服務器會將test.jpg當作test4.php文件解析再進行訪問。總之,雖然在本關卡中不能上傳.php后綴的文件,但是可以通過先上傳.htacess文件,再上傳滿足.htacess的圖片文件,這樣即可通過上傳此2個類型文件達到繞過服務器的過濾規則的目的。?

三、php ts版本安裝

詳細很多使用phpstudy搭建靶場的網安人參考upload-labs靶場攻略卻無法復現成功,為何PHPStudy中AddType application/x-httpd-php,以及.htacesss滲透方法等Apache命令之所以在Apache的設置文件中設置后未實現目標效果呢,這是由于PHP的版本不符導致的,但注意這里的PHP版本并不是指PHP7.3.0、PHP7.4.0這種版本號,也不是適用于32位的PHP、適用于64位的PHP這種不同機型的版本,而是PHP的NTS(Non Thread Safe)與TS(Thread Safe)的這種不同版本導致的。如下所示,當前phpstudy中點擊軟件管理,我們查看php軟件都是nts版本,故而如果像滲透成功,需要安裝TS版本的PHP,并在Apache中配置好相關設置。

將ts版本的php軟件集成到phpstudy,步驟如下所示。?

1、下載ts版本php

在php官網下載ts版本的php軟件,官網地址如下所示。

https://windows.php.net/download

以php7.30為例,下載過程要選擇ts版本(即thread safe),具體如下圖黑框所示。?

2、放入到phpstudy指定文件夾中

將下載解壓后的ts版本php放到小皮的指定目錄中,即“Extensions\php”子目錄中,具體如下所示。

3、修改php配置文件

進入到php_7.3.30_t文件夾內,找到php.ini-development文件,復制黏貼一份并改名為php.ini。

4、修改php.ini文件

打開php.ini,找到extension_dir,并把前面的";"符號刪掉(在php.ini相當于注釋符),其值改為"PHP文件的路徑/ext"。

;extension_dir = "D:/phpstudy_pro/Extensions/php/php-7.3.30ts/ext"

修改后如下所示,記得修改后保存文件。

5、修改httpd.conf文件

(1)定位文件

接下來在PHPStudy安裝Apache的目錄下,打開Apache的配置文件httpd.conf,以我的安裝目錄為例,httpd.conf的位置如下所示。

D:\phpstudy_pro, httpd.conf在D:\phpstudy_pro\Extensions\Apache2.4.39\conf

?也可以通過phpstudy-設置-httpd.conf找到該文件,具體方法如下所示。

(2)修改文件

為例防止將httpd.cofn改壞了,建議先把httpd.conf備份一份,以后更換時直接替換就好。搜索LoadModule,找到有很多LoadModule語句的地方。

.在末尾加上LoadModule php7_module "PHP文件的路徑/php7apache2_4.dll"和PHPIniDir "PHP文件的路徑"。

LoadModule php7_module "D:/phpstudy_pro/Extensions/php/php-7.3.30ts/php7apache2_4.dll"
PHPIniDir "D:/phpstudy_pro/Extensions/php/php-7.3.30ts"

修改后效果如下所示,注意需要保存文件。

6、重啟小皮

完成修改配置文件后,需要重啟服務生效,如下所示。

7、切換ts版本php?

通過首頁-網站-管理-php版本-切換到php-7.3.30ts,將php切換為ts版本的php服務。

四、滲透實戰

1、構造.htacess文件

2、構造圖片文件

構造圖片文件test4.jpg,內容為顯示phpinfo的信息,具體如下所示,后綴為。

<?php
phpinfo();
?>

3、上傳.htacess和圖片文件

打開upload靶場的第四關,將.htacess和test4.jpg文件,如下所示兩個文件都上傳成功。

http://127.0.0.1/upload-labs/Pass-04/index.php

4、獲取圖片地址

鼠標右鍵點擊上傳成功的反饋框,獲取到圖片的URL地址,具體如下所示。

http://127.0.0.1/upload-labs/upload/test4.jpg

5、訪問腳本

復制圖片地址到URL地址欄并訪問,顯示php版本號就是上傳成功,.hatcess繞過成功,文件成功上傳到upload目錄下了

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

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

相關文章

LeetCode 88. 合并兩個有序數組 | Python 最簡寫法 + 實戰注釋

在日常刷題和面試中,「合并兩個有序數組」是一個經典基礎題。雖然屬于簡單難度,但它非常考察你的數組操作技巧和代碼優化能力。本篇文章將帶你從基礎解法入手,進階到最簡潔的三元表達式寫法,理解每一行代碼背后的邏輯。 ?? 題目描述 給你兩個按 非遞減順序 排列的整數數組…

Kafka進階指南:從原理到實戰

目錄 一、Kafka 基礎回顧 二、生產者進階 2.1 數據生產流程深度解析 2.2 關鍵配置參數詳解 2.3 序列化與自定義序列化器 三、消費者進階 3.1 消費方式與原理 3.2 分區分配策略 3.2.1 Range&#xff08;范圍&#xff09;策略 3.2.2 Round - Robin&#xff08;輪詢&…

Lightpanda開源瀏覽器:專為 AI 和自動化而設計的無界面瀏覽器

?一、軟件介紹 文末提供程序和源碼下載 Lightpanda開源瀏覽器&#xff1a;專為 AI 和自動化而設計的無界面瀏覽器&#xff1b; Javascript execution Javascript 執行Support of Web APIs (partial, WIP)支持 Web API&#xff08;部分、WIP&#xff09;Compatible with Pla…

團結引擎開源車模 Sample 發布:光照渲染優化 動態交互全面體驗升級

光照、材質與交互效果的精細控制&#xff0c;通常意味著復雜的技術挑戰&#xff0c;但借助 Shader Graph 14.1.0(已內置在團結引擎官方 1.5.0 版本中)&#xff0c;這一切都變得簡單易用。通過最新團結引擎官方車模 Sample&#xff0c;開發者能切身感受到全新光照優化與編輯功能…

SpringCloud之Ribbon基礎認識-服務負載均衡

0、Ribbon基本認識 Spring Cloud Ribbon 是基于 Netflix Ribbon 實現的一套客戶端 負載均衡的工具。 Ribbon 主要功能是提供客戶端負載均衡算法和服務調用 Ribbon 客戶端組件提供一系列完善的配置項如連接超時&#xff0c;重試等。 Ribbon 會基于某種規則&#xff08;如簡單…

當 DeepSeek 遇見區塊鏈:一場顛覆式的應用革命

目錄 一、DeepSeek 與區塊鏈的初印象二、技術融合&#xff1a;創新的基石2.1 強化學習優化智能合約2.2 混合專家系統適配多鏈2.3 語義理解增強合規性 三、應用實踐&#xff1a;重塑行業格局3.1 DeFi 協議智能化躍遷3.2 GameFi 經濟深度進化3.3 供應鏈金融信任增強 四、面臨挑戰…

vue3項目中使用CodeMirror組件的詳細教程,中文幫助文檔,使用手冊

簡介 這是基于 Vue 3 開發的 CodeMirror 組件。該組件基于 CodeMirror 5 開發&#xff0c;僅支持 Vue 3。 除了支持官方提供的各種語法模式外&#xff0c;還額外添加了日志輸出展示模式&#xff0c;開箱即用&#xff0c;但不一定適用于所有場景。 如需完整文檔和更多使用案例…

LeetCode熱題100--240.搜索二維矩陣--中等

1. 題目 編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性&#xff1a; 每行的元素從左到右升序排列。 每列的元素從上到下升序排列。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[1…

2025爬蟲實戰技巧:高效數據采集方案

2025爬蟲實戰技巧:高效數據采集方案 ?? 本文核心價值 HTTPS請求鏈路加密逆向解析動態Cookie生成機制破解Cloudflare等高級防護繞過方案分布式爬蟲架構設計要點目錄 2025爬蟲實戰技巧:高效數據采集方案?? 本文核心價值一、現代反爬機制技術解析1.1 主流平臺防護體系1.2 反…

綁定 SSH key(macos)

在 macOS 上綁定 Gitee 或 GitHub 的 SSH Key&#xff0c;通常分為以下幾步操作&#xff0c;包括生成 SSH key、添加到 ssh-agent&#xff0c;并配置到 Gitee 或 GitHub 平臺。 1. 檢查是否已有 SSH Key ls -al ~/.ssh 看看是否已有 id_rsa 或 id_ed25519 等文件。如果沒有就…

Tailwind CSS v4 主題化實踐入門(自定義 Theme + 主題模式切換)?

ok&#xff0c;經過學習Tailwindcss我決定將此專欄建設成為一個Tailwindcss實戰專欄&#xff0c;我將在專欄內完成5050挑戰&#xff1a;50天50個Tailwindcss練習項目&#xff0c;歡迎大家訂閱&#xff01;&#xff01;&#xff01; Tailwind CSS v4 帶來了更強大的主題定制能力…

SAF利用由Varjo和AFormX開發的VR/XR模擬器推動作戰訓練

通過將AFormX的先進軍用飛行模擬器與Varjo的行業領先的VR/XR硬件相結合&#xff0c;斯洛文尼亞武裝部隊正以經濟高效、沉浸式的訓練方式培訓戰斗機飛行員&#xff0c;以提高其戰術準備和作戰效率。 挑戰&#xff1a;獲得戰術軍事航空訓練的機會有限 軍事航空訓練長期以來一直…

VUE中通過DOM導出PDF

最終效果 前端導出PDF的核心在于樣式的繪制上&#xff0c;這里其實直接使用CSS進行繪制和布局就行&#xff0c;只不過需要計算好每頁DIV盒子的大小&#xff0c;防止一頁放不下造成樣式錯亂。 項目依賴 項目是Vue3 TS npm i html2canvas1.4.1 npm i jspdf3.0.1工具類(htmlToPdf…

SpringAI框架中的RAG模塊詳解及應用示例

SpringAI框架中的RAG模塊詳解及應用示例 RAG&#xff08;Retrieval-Augmented Generation&#xff09;可以通過檢索知識庫&#xff0c;克服大模型訓練完成后參數凍結的局限性&#xff0c;攜帶知識讓大模型根據知識進行回答。SpringAI框架提供了模塊化的API來支持RAG&#xff0…

MySQL-數據查詢(測試)-05-(12-1)

1-數據準備&#xff1a; CREATE TABLE 員工信息表 (員工編號 VARCHAR(10) PRIMARY KEY,姓名 VARCHAR(20),學歷 VARCHAR(20),出生日期 DATE,性別 INT,工作年限 INT,地址 VARCHAR(100),電話號碼 VARCHAR(20),員工部門號 INT ); INSERT INTO 員工信息表 (員工編號, 姓名, 學歷, 出…

5G網絡:能源管理的“智能電網“革命,Python如何成為關鍵推手?

5G網絡:能源管理的"智能電網"革命,Python如何成為關鍵推手? 大家好,我是Echo_Wish。今天咱們聊一個既硬核又接地氣的話題——5G網絡如何用Python代碼重構全球能源管理。 不知道你們有沒有注意過: ? 家里裝了智能電表后,電費突然變"聰明"了,谷時充…

AI背景下,如何重構你的產品?

當AI敲門時&#xff0c;你的產品準備好開門了嗎&#xff1f; 最近和做產品的老張聊天&#xff0c;他愁眉苦臉地說&#xff1a;"現在AI這么火&#xff0c;我們的產品就像個老古董&#xff0c;用戶都跑隔壁用AI產品去了。“這話讓我想起三年前另一個朋友&#xff0c;當時區…

互聯網大廠Java面試實戰:從Spring Boot到微服務的技術問答與解析

&#x1f4aa;&#x1f3fb; 1. Python基礎專欄&#xff0c;基礎知識一網打盡&#xff0c;9.9元買不了吃虧&#xff0c;買不了上當。 Python從入門到精通 &#x1f601; 2. 畢業設計專欄&#xff0c;畢業季咱們不慌忙&#xff0c;幾百款畢業設計等你選。 ?? 3. Python爬蟲專欄…

Apollo學習——aem問題

執行aem指令出現一下問題 lxflxf:~/MYFile/apollo_v10.0 $aem enter permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.49/containers/json?filters%7B%22name%22%…

數字IC后端零基礎入門基礎理論(Day2)

數字IC后端零基礎入門基礎理論&#xff08;Day1&#xff09; Placement Blockage: cell擺放阻擋層。它是用來引導工具做placement的一種物理約束或手段&#xff0c;目的是希望工具按照我們的要求來做標準單元的擺放。 它主要有三種類型&#xff0c;分別是hard placement bloc…