php文件包含漏洞總結

前言

一:什麼是文件包含漏洞?
服務器通過PHP的特性(函數)去包含任意文件時,由於要包含的這個文件來源過濾不嚴,從而可以去包含一個惡意文件,而我可以構造這個惡意文件來達到攻擊的目的。
漏洞產生的根本原因就是,在通過php的函數引入文件時,沒有對傳入的文件名經過合理的校驗,從而操作了預想 之外的文件(也就是惡意文件)。

二:是不是隻有php纔有文件包含漏洞?
當然不是的,只是文件包含漏洞比較常出現在PHP中,而且文件包含漏洞在PHP web Application中居多。當然了機會所有的腳本語言都會提供文件包含的功能,只是在JSP,ASP,ASP.NET中非常少見。

三:PHP常見的文件包含函數:

Include()Require()Include_once()Require_once()

文件包含漏洞的類型

本地文件包含漏洞(LFI)
利用條件:
(1):allow_url_fopen=ON
(2):用戶可以控制變量
遠程文件包含漏洞(RFL)
利用條件:
(1):allow_url_fopen=ON
(2):allow_url_include=ON
(3):用戶可以控制變量
當然了,通過在Web中我們是無法知道allow_url_fopen和allow_url_include開啓或者關閉的情況的,除非有phpinfo()但是通過經驗得知本地文件包含通常是開啓的,也就是allow_url_fopen=On的,通常遠程文件包含是關閉的,因爲從PHP5.2以後開始allow_url_include是默認關閉的,也就是Off,並且很少有人去修改他。

文件包含漏洞的利用方式

  • php://input(接收POST過來的值)
    利用條件:
    allow_url_fopen = ON
    allow_url_include = ON
    php版本小於等於5.3.0
    利用方式:
    php://input
  • php://filter
    利用條件:
    allow_url_fopen= ON
    allow_url_include 不做要求
    利用方式:
    php://filter/read=convert.base64-encode/resource=./robots.txt
    讀取經過base64加密後的文件源碼,將讀取出來的文件內容通過base64解碼即可。
    在這裏插入圖片描述
  • phar://
    利用條件:
    php版本大於等於5.3.0
    利用方式:
    將內容爲<?php phpinfo();?>的123.txt文件壓縮爲123.zip
    phar://絕對路徑\123.zip\123.txt
    在這裏插入圖片描述
  • data:text/plain
    利用條件:
    allow_url_fopen=ON
    allow_url_include=ON
    php版本大於5.2
    利用方式:
    data:text/plain,<?php phpinfo();?>
    data:text/plain,<?php system("whoami");?>
    在這裏插入圖片描述data:text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b
    這裏需要注意的是text/plain後面是;base64,後面接的base64加密後的內容 %2b 是加號 + 的URl編碼爲%20
    在這裏插入圖片描述
  • file://
    利用條件:
    對allow_url_fopen和allow_url_include不做要求
    利用方式:
    file://D:/phpStudy/PHPTutorial/WWW/BlueCMS v1.6 sp1/robots.txt
    在這裏插入圖片描述

總結:

本人目前總結的就這麼多,如有不足,還請大家多多指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章