前言
为什么有今天这篇文章?原因是我在浏览Twitter时,发现关于远程文件包含RFI的一个奇淫技巧!值得记录一下,思路也很新奇!因为它打破我之前以为RFI已死的观点:)
正文
RFI引出
我们知道php最危险的漏洞函数类别之一就是文件包含类的函数,诸如include,include_once,require,require_once语句的时候,都会使用$_GET或者是其他未经过滤的变量,这就是一个主要的安全风险。
在PHP应用中,通常会有两个问题导致RFI漏洞。其中之一就是应用程序逻辑错误。这些漏洞产生的原因是本来应该被包含到另一个页面的文件并没有被包含,而是包含了其他文件。当这些文件独立执行时,就没有配置文件来指定这些变量的默认值,如果web应用配置不正确的话,用户就可以自己指定文件作为请求的一部分。
用一个最简单的例子来演示一下RFI
<?php
$file=$_GET['file'];
include($file);
?>
在上面的代码中,file参数从get请求中取值,并且是用户可控的值。file接收到参数值后直接带入到PHP文件中,没有经过任何处理。这样攻击者就可以发起相应的请求,从而让应用程序执行恶意脚本。例如,一个webshell如下:

本文介绍了一种绕过PHP中远程文件包含(RFI)限制的新方法,即通过SMB共享进行文件加载,即使在allow_url_fopen和allow_url_include关闭的情况下也能实现远程文件包含,展示了如何配置SMB服务器和PHP环境来执行这一攻击。
最低0.47元/天 解锁文章
439





