文件包含漏洞

0x01 什么是文件包含

服务器在执行php文件的时候,如果该文件里有文件包含函数则可在当前文件加载另一个文件,并且被包含的文件会被当成php文件来执行,php里的文件包含是和C/C++语言一样的。

php里面的文件包含函数有四个:

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

include()和require()的区别在于include()如果在包含的过程中出现错误则会抛出警告但程序正常运行,require()包含出错时则会直接报错并且推出程序。

include()和include_once()的区别在于include_once只包含一次,require_once()同上。

0x02什么是文件包含漏洞

文件包含函数的参数没有经过严格的过滤,使其参数为用户可控,用户可以通过文件包含函数恶意执行非预期代码,比如读取服务器的敏感文件等。

文件包含有本地文件包含和远程文件包含,触发文件包含漏洞涉及两个条件:allow_url_fopen和allow_url_include

本地文件包含:allow_url_fopen = On && allow_url_include = Off

远程文件包含:allow_url_fopen = On && allow_url_include = On

在PHP中allow_url_fopen是一直默认开启的,而allow_url_include在PHP5.2之后就默认关闭了

0x03本地文件包含示例

 

这就是一个最简单的文件包含漏洞的例子,可以尝试传入参数/etc/passwd读取系统用户密码

 

 

 未完待续.....

posted @ 2020-07-30 16:04  Mr.J&  阅读(140)  评论(0)    收藏  举报