本地包含:LFI(Local File Inclusion)通过填写..//etc/等路径得到一些文件的内容

远程包含:RFI(Remote File Inclusion)加载远程主机中的文件,,用来钓鱼或得到一些系统信息,譬如phpinfo,另外威胁到用户可能危害更大。

危害:可以读取系统任意文件

本地包含:
你包含的内容必须在服务器上,才能叫本地!
在DVWA产生此漏洞的原因是包含的参数能够被控制,PHP采用的是includerequireinclude_onceinclude_once等函数来包含文件,通常文件上传后无法执行脚本可以试试将此文件包含来执行代码。

将要包含的shell打包成压缩文件(支持什么格式的压缩?),然后用phar://压缩包/要解析的包文件这种格式去拿shell(可以搭配文件上传来传一个图片马)。phar会解析压缩包内的文件。

远程包含:
远程需要开启参数。它只能用http://地址/目录/文件.php完整的URL连接来访问

includeUrl.JPG

防御

  • 限制文件名中只能包含字母与数字,像/这种符号的输入统统替换成空字符串,这样不管它是相对路径还是绝对路径都无法切换目录。
  • 关闭配置文件中的allow_url_fopen allow_url_include参数。
  • 避免由外界传入参数值,可以在代码内部包含指定文件。
  • 如果是PHP在php.iniallow_url_include = Off就能关闭RFI。

标签: none

讨论讨论讨论!