米斯特白帽培训讲义 漏洞篇 文件包含

讲师:gh0stkey

整理:飞龙

协议:CC BY-NC-SA 4.0

原理

文件包含就是将一个文件包含到自己的文件中执行。它可分为本地包含和远程包含,本地包含即包含本地磁盘上的文件,文件名称是相对路径或绝对路径,远程包含即包含互联网上的文件,文件名称是 URL。

示例代码

比如我们有一个test.txt文件,仅仅调用phpinfo来测试:

<?php phpinfo();?>

然后我们在相同目录下放置一个fileinclude.php,如下:

<?php
$file=@$_GET['file'];
$b=@$_GET['b'];
if($file!==null){echo "<center>File:".$file."<br/>Result:</center>";include $file;
}else if($b!==null){echo "<center>File:".$b."<br/>Result:</center>";require($b);require($b.".php");
}

第一行代码获取 URL 参数file的内容。第二行代码获得 URL 参数b的内容。3 ~ 5 行首先判断$file是否为空,若不为空,输出其内容,并将其作为文件名称包含。6 ~ 9 行,若$file为空,则判断$b是否为空,不为空的话,输出其内容,并将其作为文件名称包含。

我们在相同目录下执行php -S 0.0.0.0:80,之后访问http://localhost/fileinclude.php?file=test.txt,会看到phpinfo的输出。

为了演示远程包含,我们需要将 PHP 配置文件中的allow_url_include设置为on,之后重启 PHP。远程包含的话,我们需要将file参数改为http://localhost/text.txt,可以看到相同结果。

如何挖掘

首先对 URL 进行分析,看看是否和文件相关,比如www.test.com/xxx.php?file=yyy。带有文件相关的敏感名称都可以进行挖掘。

利用

当我们发现了本地或远程包含漏洞时,首先寻找上传点,比如用户头像上传功能。然后我们可以构造一个纯文本文件,内容为<?php phpinfo();?>,并将其命名为xxx.jpg

之后我们就可以把xxx.jpg上传上去,并通过应用得到它的位置,假设是/upload/xxx.jpg,然后我们就可以把file参数的值改为它。以前面的代码为例,URL 是http://localhost/fileinclude.php?file=/upload/xxx.jpg

要注意这个漏洞是无!视!扩!展!名!的!跟文件上传漏洞不一样,文件上传漏洞中如果我们上传的文件不是.php就执行不了(当然也有一些绕过手段),但是文件包含漏洞中的用户名是任意的,前面我们上传了.txt,证实有效,那么这个.jpg也是有效的。

如果我们把xxx.jpg的内容改为菜刀的一句话,那就可以用菜刀连接。

再说一下远程包含,远程包含的条件比较苛刻,目标网站需要把allow_url_open给打开。所以有本地包含不一定有远程包含,有远程包含一定就有本地包含。但是,远程包含的利用相对简单,只要将代码上传到自己博客,或者任何能通过 URL 访问到的地方就可以了。后续步骤是一样的。

米斯特白帽培训讲义 漏洞篇 文件包含相关推荐

  1. 米斯特白帽培训讲义 漏洞篇 文件上传

    米斯特白帽培训讲义 漏洞篇 文件上传 讲师:gh0stkey 整理:飞龙 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc- ...

  2. 米斯特白帽培训讲义 漏洞篇 CSRF

    米斯特白帽培训讲义 漏洞篇 CSRF 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 CSRF(Cross-site request forgery跨站请求伪造,也被称为&q ...

  3. 米斯特白帽培训讲义 漏洞篇 XSS

    米斯特白帽培训讲义 漏洞篇 XSS 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 分类 总共有三种 反射型:经过后端,不经过数据库 存储型:经过后端,经过数据库 DOM:不 ...

  4. 米斯特白帽培训讲义 漏洞篇 SQL 注入

    米斯特白帽培训讲义 漏洞篇 SQL 注入 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 原理与危害 SQL 注入就是指,在输入的字符串中注入 SQL 语句,如果应用相信用户 ...

  5. 米斯特白帽培训讲义 漏洞篇 代码执行

    米斯特白帽培训讲义 漏洞篇 代码执行 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 原理 由于开发人员编写源码时,没有针对代码中可执行的特殊函数入口做过滤,导致客户端可以提 ...

  6. 米斯特白帽培训讲义 漏洞篇 弱口令、爆破、遍历

    米斯特白帽培训讲义 漏洞篇 弱口令.爆破.遍历 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 成因 弱口令没有严格和准确的定义,通常认为容易被别人(它们有可能对你很了解)猜 ...

  7. 米斯特白帽培训讲义 漏洞篇 提权

    米斯特白帽培训讲义 漏洞篇 提权 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 提权,顾名思义就是提高自己在服务器中的权限,就比如在 Windows 中你本身登录的用户是 ...

  8. 米斯特白帽培训讲义 漏洞篇 逻辑漏洞

    米斯特白帽培训讲义 漏洞篇 逻辑漏洞 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 任意密码找回 这是补天平台上的一个案例: http://www.118114.cn/re ...

  9. 米斯特白帽培训讲义 漏洞篇 越权

    米斯特白帽培训讲义 漏洞篇 越权 讲师:gh0stkey 整理:飞龙 协议:CC BY-NC-SA 4.0 越权漏洞是 Web 应用程序中一种常见的安全漏洞.它的威胁在于一个账户即可控制全站用户数据. ...

最新文章

  1. emoji 乱码_这个自制emoji的网站,让你成为永远不输的斗图王者
  2. 阿里二面:如何设计与实现短URL服务?
  3. C/C++获取系统当前时间
  4. ERROR Cannot determine the location of the VS Common Tools Folder
  5. VS Code 1.39 发布!Web 版 VS Code 是否离我们越来越近了?(文末彩蛋)
  6. 火热的数据中台对企业的价值是什么?
  7. Elasticsearch 数据写入原理
  8. 添加删除桌面用户ubuntu10.10
  9. php框架 swoop_PHP Form Validation
  10. 用 GDI 操作 EMF 文件(转)
  11. 如何使用python多线程_Python:怎样用线程将任务并行化?
  12. linux vim命令,linux之vim命令
  13. 人脸验证(一)--Deepface
  14. ModelBinder——ASP.NET MVC Model绑定的核心
  15. 6 DHCPV6原理
  16. postman并发测试_三种高并发测试工具总结(Postman,Apache Bench,Jmeter)
  17. html图片闪动效果,用CSS制造出光泽一闪而过的图片效果
  18. 异地容灾系统方案设计与分析
  19. 工大校园邮箱申请流程
  20. 计算机毕业设计Android网约车拼车打车叫车系统APP

热门文章

  1. (45)FPGA面试技能提升篇(Hyperlink接口)
  2. java 0x5_java - 从Java中的COM端口读取,错误0x5在.. \ rxtx \ src \ termios.c(892) - 堆栈内存溢出...
  3. vc6开发一个抓包软件_开发一个软件要多少钱?app软件开发的费用
  4. 使用linux_使用 AppImage 进行 Linux 软件包管理 | Linux 中国
  5. python爬取抖音用户数据的单位是_爬取并分析一下B站的最热视频排行榜,看看大家都喜欢看什么视频...
  6. ARM开发步步深入之NandFlash 4KB突围
  7. Python学习-将list列表写入文件并读取方法汇总
  8. Linux的常用指令
  9. bomb android实战,android 仿qq app源码下载(bmob)
  10. 【笔记】Java数据结构与算法