HTTP 方法枚举与 PUT 风险:从 OPTIONS 探测到配置加固
文章状态:待复验
本文由 Lee 的 CSDN 原创学习记录迁移并重新整理。以下操作仅限自建环境、CTF 与明确授权靶场,请勿用于未授权目标。
学习目标
- 理解 OPTIONS 响应与 Allow 头的意义
- 识别 PUT 风险成立所需的写入和执行条件
- 从服务端配置角度限制不必要的 HTTP 方法
实验说明
- 难度:中级
- 范围:本地或公开授权靶场
- 复验状态:正文已完成格式迁移,关键结论将在后续使用固定环境重新验证
原始实验记录
通过发送 OPTIONS 请求来探测服务器支持的 HTTP 方法。
示例环境:[NSSRound#1 Basic] basic_check

页面直接返回了当前 PHP 源码,常规请求都会被应用逻辑拦截并返回相同内容。
题目标签指向 HTTP 协议与中间件配置,因此先从服务器允许的请求方法入手。
HTTP 方法枚举
除常见的 GET(获取资源)和 POST(提交数据)外,本实验还关注 PUT(创建或覆盖资源)、DELETE(删除资源)与 OPTIONS(查询服务器支持的方法)。
1 | curl -X PUT http://xxx.com # 发送 PUT 请求 |
使用 curl 发送 OPTIONS 请求后,服务器可能通过 Allow 响应头列出支持的方法:
1 | Allow: GET, POST, OPTIONS, PUT #列举服务器允许的http请求方式 |
由于动态页面始终返回源码,本实验改用静态路径验证方法配置和文件写入行为。

响应表明服务器开放了四种请求方法。
PUT攻击
继续验证 PUT 是否真正具备写入能力。服务器返回 201 Created,说明测试文件已经创建。

写入成功

在授权靶场中,随后验证文件写入能否进一步形成代码执行。以下目标域名已经脱敏:
1 | # 写入仅用于授权靶场验证的测试文件 |
防御与复盘
- 仅开放业务实际需要的 HTTP 方法,并在反向代理与应用层同时校验。
- 上传或写入目录与可执行目录分离,避免文件写入直接演变为代码执行。
- 记录异常 OPTIONS、PUT、DELETE 请求,并结合来源、路径和响应状态进行告警。
原文出处
- 标题: HTTP 方法枚举与 PUT 风险:从 OPTIONS 探测到配置加固
- 作者: Lee
- 创建于 : 2026-08-04 14:44:27
- 更新于 : 2026-09-04 00:00:00
- 链接: https://leeei.site/2026/08/04/HTTP方法枚举与PUT风险/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。