在web后台开发时,程序员为开发更简洁,会使用包含函数功能。但有些时候因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端功能中使用“包含”功能),又因为开发人员没有对要包含的这个文件进行安全考虑,就导致攻击者可以通过修改包含文件的位置来让后台执行任意文件代码。
首先在php.ini文件中找到如下部分,将其改成On
打开pikachu,运行,正常情况下应该是这样的:
尝试一下file6.php:
下面来读取系统文件。(linux可能更好操作一些,但我使用的是windows)
直接在url中把文件名修改成我们反推出来的重要信息的存储路径,例如我们查看windows下的win.ini文件:
同理可以得到system.ini文件内容:
查看代码,可以知道可以利用白名单方法加强防范。
输入一个球星,运行:
尝试一下,发现可以使用主机的路径来访问内容。
在url中尝试包含http,可以直接连接。
这时若尝试在fi_remote同等级目录下建立一个文件,写一句话木马,用中国蚁剑等进行连接,便可以实现访问远程文件包。
1.在功能上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。
'若一定要用前端,则进行以下考量 :
2.过滤各种http://, https://, …/…/ 等。
3.配置php.ini文件时,allow_url_fopen = off
allow_url_include=off
magic_quotes_gpc=on
4.通过白名单策略,仅允许包含运行指定的文件,其他都禁止。