Web安全之文件包含漏洞

文件包含漏洞
allow_url_fopen = On && allow_url_include = On 此时才可以触发远程文件包含漏洞
allow_url_fopen一直都是默认开启的,而allow_url_include从PHP5.2之后就是默认关闭的了

1.本地文件包含

1.1.概述

被包含的文件存放于网站服务器上。仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感Web安全之文件包含漏洞
漏洞利用:
Web安全之文件包含漏洞

1.2.Windows敏感文件

C:boot.ini //查看系统版本 C:windowssystem32inetsrvMetaBase.xml //iis配置文件 C:windowsrepairsame //存储windows系统初次安装密码 C:ProgramFilesmysqlmy.ini //mysql配置信息 C:ProgramFilesmysqldatamysqluser.MYD //mysql root密码 C:windowsphp.ini //php配置信息 

1.3.Linux敏感文件

/etc/passwd //账户信息 /etc/shadow //账户密码文件 /etc/apache2/apache2.conf //Apache2默认配置文件 /etc/apache2/sites-available/000-default.conf //虚拟网站配置 /etc/php/5.6/apache2/php.ini //php相关配置 /etc/httpd/conf/httpd.conf //apache配置信息 /etc/my.conf //mysql配置文件 

2.远程文件包含

2.1.概述

当被包含的文件在第三方服务器(攻击者的服务器)时,就形成远程文件包含。能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码。
以pikachu靶场为例:
第三方服务器文件
Web安全之文件包含漏洞
php.ini配置文件修改为
Web安全之文件包含漏洞
漏洞利用:
Web安全之文件包含漏洞

2.2.包含条件

PHP的配置选项allow_url_include为ON的话,则include/require函数可以加载远程文件,这种漏洞被称为"远程文件包含漏洞(Remote File Inclusion RFI)"。

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

注意:如果是包含远程服务器上的PHP文件,那么得到的是被远程服务器解析过的PHP,所以在写一句话木马的时候就不要做成.php的文件,一般包含.txt的文件
由于一般情况下allow_url_include=Off,所以一般远程包含文件很难实现。

3.漏洞利用

3.1.包含日志文件

Windows系统下apache/access.log:服务器日志,访问系统的记录文件
apache目录找找不见access.log文件:解决方法
Web安全之文件包含漏洞
利用过程:
Web安全之文件包含漏洞
利用本地文件包含即可
Web安全之文件包含漏洞
总结:利用bp将一句话木马写入access.log,再通过文件包含漏洞获取,其中access.log的文件路径需要爆破
而Linux系统容易出现权限问题不容易实现日志文件包含。

3.2.常见PHP伪协议利用

Web安全之文件包含漏洞

3.2.1.file协议

本地文件传输协议,用于访问本地计算机中的文件。好比通过Windows的资源管理器中打开文件或者通过右键单击‘打开’一样。
格式:

file://filepath 
Web安全之文件包含漏洞

3.2.2.php://filter协议

用于读取源码且在双off的情况下也可以正常使用
格式:

php://filter/read=convert.base64-encode/resource=include.php 

Web安全之文件包含漏洞
base64解码
Web安全之文件包含漏洞
然后进行代码审计

3.2.3.zip://协议

zip://、bzip2://、zlib:// 协议在双 off 的情况下也可以正常使用,都属于压缩流,可以访问压缩文件中的子文件。
格式:

zip://[压缩文件绝对路径]#[压缩文件内的子文件名] 

利用思路:将一句话木马添加到压缩包a.zip中,然后将a.zip重命名成a.jpg上传到目标服务器上。
Web安全之文件包含漏洞

3.2.4.phar://协议

类似于 zip 协议,但是可以使用相对路径。双off的情况下也可以使用。
格式:

phar://[压缩文件绝对/相对路径]/[压缩文件内的子文件名] 
Web安全之文件包含漏洞

4.漏洞危害

4.1.泄露敏感信息

通过文件包含漏洞去读取敏感文件内容。
例如:
Web安全之文件包含漏洞

4.2.获取服务器权限

包含文件的内容只要符合php语法都能被当成php代码进行解析,与后缀名无关。也就是说如果存在文件包含漏洞,即使上传的一句话木马写在图片里,由于文件内容被当成php解析,所以只要符合php语法就能通过文件包含读取到,进而获取服务器权限。

5.漏洞防御

1.尽量不使用动态包含,无需情况下设置 allow_url_include 和 allow_url_fopen 为关闭;
2.对可以包含的文件进行限制:使用白名单的方式,或者设置包含的目录,open_basedir;
3.严格检查用户输入,参数中不允许出现 …/ 之类的目录跳转符;
4.不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

版权声明:玥玥 发表于 2021-08-23 14:36:23。
转载请注明:Web安全之文件包含漏洞 | 女黑客导航