文件包含分为远程文件包含和远程文件包含
比如程序员为了提高效率让代码看起来简洁,会使用包含函数的功能,写多个文件
之后需要了进行调用,比如.c写了很多个函数分别在不同的文件里,用的时候直接
引用文件即可。但是如果没有做好控制,使得前端用户也可以操作目标文件,就会
出现文件包含漏洞。
本地文件包含
观察一下上面的url,可以看到这应该是一个get请求,文件名直接
显示在了url里,我们可以通过改filename这个参数的值引导后台显示此网站服务器
的其他文件,比如linux下的话就可以../../../../../../etc/passwd 拿到用户密码信息。
我用的是win2003系统,就演示一下www下的目录
观察源码:可以看到直接获取了filename的值然后用include进行了文件包含,后台
没有做任何处理。应该用白名单限制只允许提交规定的几个文件名
远程文件包含
默认情况下include和require是不支持远程使用的,可以在php.ini中(php5.4.34)
allow_url_fope = on //默认打开
Allow_url_include = on //默认关闭 打开这个就可以远程调用文件
先在远端写一个恶意木马文件
远程调用这个恶意文件
然后在同级目录下就生成了木马文件1234.php
之后用菜刀连接里面的一句话木马就可以对其进行控制。