文件包含漏洞(隨筆)

一. 簡單理解

文件包含就是一個文件裏面包含另一個文件。一開始接觸的時候是由於php裏面,可是查找了一些資料這個存在在不少語言裏面。
程序開發人員通常會把重複使用的函數寫到單個文件中,須要使用某個函數時直接調用此文件,而無需再次編寫,這中文件調用的過程通常被稱爲文件包含。
程序開發人員通常但願代碼更靈活,因此將被包含的文件設置爲變量,用來進行動態調用,
但正是因爲這種靈活性,從而致使客戶端能夠調用一個惡意文件,形成文件包含漏洞。
幾乎全部腳本語言都會提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,
而在JSP、ASP、程序中卻很是少,甚至沒有,這是有些語言設計的弊端。
在PHP中常常出現包含漏洞,但這並不意味這其餘語言不存在。php

二.產生的緣由

經過引入文件時,用戶可控,沒有嚴格的檢驗,或是被繞過,操做一些敏感文件,致使文件泄露和惡意代碼注入
當包含文件在服務器本地上,就造成本地文件包含,當包含的文件在第三方服務器是,就造成可遠程文件包含。web

包含文件的函數

1.include()shell

2.include_once()服務器

3.require()函數

4.require_once()工具

代碼審計的時候,是不是變量,不過濾,過濾不嚴格,函數include/requireui

遠程文件包含和本地文件包含的配置區別

  • 本地文件包含php.ini配置文件中開啓allow_url_include
  • 遠程文件包含與本地文件包含的區別(開啓allow_url_include和allow_url—ftp on)
  • 遠程文件(包括本地文件包含)包含比本地文件包含的危害大url

    本地文件包含利用

  • 上傳圖片GETshell
  • 讀取文件,讀取php文件
  • 包含日誌文件獲取webshell
  • 包含/proc/self/environ 文件webshell
  • phpinfo.php 能夠包含臨時文件(顯示臨時文件路徑)寫工具發包上傳文件。查看返回信息路徑。在使用include包含文件(速度要求快)
  • 包含data//或是php://input協議(僞協議,須要allow_url_include=On) 做者:青山i 連接:https://www.jianshu.com/p/110278faeddb設計

使用PHP封裝協議讀取文件和寫入PHP文件
1.讀取文件
先看看讀取文件,如輸入page參數值爲:php://filter/read=convert.base64-encode/resource=../../../../../var/www/dvwa/hackable/uploads/1.txt
格式爲上
2.寫入文件
前提條件是allow_url_include爲on,則構造以下URL:192.168.220.128/dvwa/vulnerabilities/fi/?page=php://input
而後再POST須要輸入的內容便可,這裏經過Firefox的HackBar來POST數據日誌

相關文章
相關標籤/搜索