漏洞讲解之文件包含

admin 2022年4月26日06:42:32评论38 views字数 1125阅读3分45秒阅读模式


一、文件包含漏洞是什么?

通过函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露甚至恶意的代码注入。


二、 文件包含漏洞有哪几种类型?

本地文件包含漏洞:本地包含顾名思义,就是在网站服务器本身存在恶意文件,然后利用本地文件包含使用。

远程文件包含漏洞:远程文件包含就是调用其他网站的恶意文件进行打开。


三、 php的包含函数

PHP中文件包含函数有以下四种


require()require_once()include()include_once()


include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。

include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。


四、 本地包含漏洞

本地包含顾名思义,就是在网站服务器本身存在恶意文件,然后利用本地文件包含使用。本地包含漏洞常被用来读取本地文件,上传包含恶意代码的图片,然后包含执行。

1. 包含恶意代码的文件

创建一个后缀为jpg的文件,内容如图:


漏洞讲解之文件包含

 

上传该文件,直接访问,文件并不会执行


漏洞讲解之文件包含

 

通过包含漏洞包含该文件后,php代码被执行了


漏洞讲解之文件包含

 

2. 读取本地文件

可通过该漏洞读取一些配置文件等敏感文件

/etc/passwd//账户信息/etc/shadow//账户密码文件/usr/local/app/apache2/conf/httpd.conf//Apache2默认配置文件/usr/local/app/apache2/conf/extra/httpd-vhost.conf//虚拟网站配置/usr/local/app/php5/lib/php.ini //PHP相关配置/etc/httpd/conf/httpd.conf//Apache配置文件/etc/my.conf // mysql 配置文件

漏洞讲解之文件包含

 

五、 远程包含漏洞

远程包含漏洞需要服务器期的服务器的php.ini的配置选项allow_url_fopen和allow_url_include为On,然后在自己的服务器放一个包含恶意代码的文件。


漏洞讲解之文件包含 


然后包含这个远程文件,通过文件包含漏洞执行文件内的代码。

 

漏洞讲解之文件包含





手握日月摘星辰,安全路上永不止步。

                                                   - Khan攻防安全实验室



本文始发于微信公众号(Khan安全攻防实验室):漏洞讲解之文件包含

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月26日06:42:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞讲解之文件包含https://cn-sec.com/archives/536389.html

发表评论

匿名网友 填写信息