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

从一次失败的Getshell到成功的XSS:我的文件上传漏洞挖掘复盘笔记

从受限上传到XSS突破一次文件上传漏洞的迂回战术那天下午的阳光透过百叶窗斜斜地打在显示器上我正百无聊赖地测试一个私人项目的协助请求功能。这个看似普通的表单里藏着一个附件上传点——正是这个不起眼的功能后来让我经历了一次从挫败到惊喜的漏洞挖掘之旅。1. 初探上传点严格的白名单防御第一次接触这个上传功能时我像往常一样先上传了正常的图片文件。服务器返回的响应引起了我的注意{ result: true, message: /UploadFiles/user123/2023/3021d74f18ddasdasd50abe934f.png, code: 0 }关键发现是上传的文件被存放在同源域名下。这意味着如果我能上传恶意文件其危害程度将大大增加。接下来是常规的模糊测试尝试上传.html文件 → 返回不支持该文件类型测试.php、.asp等常见危险扩展 → 同样被拦截使用Burp Intruder进行扩展名爆破 → 触发速率限制经过多次尝试确认了服务器的防御策略白名单机制仅允许jpg、jpeg、png、gif四种扩展名文件重命名上传后自动生成随机文件名基础过滤拒绝包含特殊字符的文件名2. 发现突破口异常扩展名的玄机就在准备放弃Getshell尝试时一个偶然的发现改变了整个方向。我注意到服务器对扩展名的处理有个有趣特性badfile.gif→ 上传成功badfile.foogif→ 上传失败这说明服务器可能只检查最后一个点号后的扩展名且允许扩展名中包含引号等特殊字符。于是构造了如下测试文件-----------------------------6683303835495 Content-Disposition: form-data; nameupload; filenamexss.gif Content-Type: image/png GIF89a htmlscriptalert(XSS);/script/html -----------------------------6683303835495--服务器竟然接受了这个文件虽然它有着.gif扩展名但内容却是HTML代码。更关键的是当用Edge浏览器访问时弹窗出现了——存储型XSS漏洞就这样被触发了。3. 技术原理深度解析3.1 服务器端的校验逻辑通过反复测试我绘制了服务器的校验流程检查项实现方式可绕过性扩展名校验白名单匹配最后一个点号后的后缀中允许特殊字符文件头校验检查前4-8字节是否符合图片格式高可伪造内容扫描无深度内容检测高关键突破点在于伪造合法的图片文件头如GIF89a利用异常扩展名含特殊字符依赖浏览器特性实现最终利用3.2 浏览器MIME嗅探差异不同浏览器对这类文件的处理方式截然不同Chrome/Firefox严格检查完整文件头对异常内容进行预处理不会执行混在图片中的JS代码Edge/IE存在MIME嗅探漏洞根据内容而非声明类型解析文件当检测到HTML标签时会以text/html方式渲染// 典型利用代码结构 GIF89a html script // 可插入更复杂的攻击载荷 alert(document.cookie); /script /html4. 扩展攻击面更多可能的利用方式除了已发现的技巧这类上传漏洞还有多种可能的利用姿势4.1 非常规扩展名利用空格插入如exploit.j pg多重扩展如exploit.png.html特殊编码如exploit.%70%68%70注意这些方法需要根据具体服务器的解析逻辑进行调整不是所有环境都适用4.2 SVG文件的XSS潜力如果服务器允许上传SVG图像可以直接构造svg xmlnshttp://www.w3.org/2000/svg onloadalert(document.domain)/SVG的XSS优势被当作合法图像格式支持完整的JavaScript执行在所有现代浏览器中都有效4.3 结合其他漏洞提升危害CSP绕过如果站点有宽松的CSP策略DOM型XSS配合客户端漏洞实现组合攻击权限提升结合CSRF等漏洞扩大影响范围5. 防御方案与实战建议5.1 开发者防护措施防护层具体措施有效性输入验证严格限制允许的字符集★★★★☆文件校验检查完整文件内容而不仅是头部★★★★★存储隔离将上传文件存放在不同域名下★★★☆☆输出编码对所有动态内容进行适当编码★★★★☆5.2 渗透测试者的方法论永不放弃当主要攻击路径受阻时寻找旁路全面记录详细记录每次测试的请求和响应环境认知了解各种浏览器和服务器特性的差异工具组合善用Burp、FuzzDB等工具提高效率这次经历让我深刻体会到漏洞挖掘往往不是直线前进的过程。那个下午看似失败的Getshell尝试最终却因为对细节的观察和对浏览器特性的了解演变成了一次成功的XSS发现。在安全测试中灵活变通的思维和坚持不懈的态度有时比掌握某个具体的技术点更为重要。
http://www.rkmt.cn/news/1388627.html

相关文章:

  • 金融练习靶场:零风险实战模拟交易平台
  • STM32定时器外部时钟模式避坑指南:为什么你的脉冲计数结果会乱跳?(附解决方案)
  • 深度解析Joy-Con Toolkit:开源手柄控制工具的完整开发指南
  • Excel排序底层逻辑与数据契约解析
  • 告别PMOS!聊聊NMOS LDO为啥更适合你的低功耗MCU项目(附选型要点)
  • 终极指南:使用罗技鼠标宏实现绝地求生零后坐力压枪
  • 灰度发布卡点诊断手册,DeepSeek SRE团队每日巡检清单(含Prometheus+OpenTelemetry双栈校验脚本)
  • Unity IL2CPP闪退排查五步法:日志、addr2line、静态分析、Profiler与MRE
  • 碧蓝航线自动化脚本Alas:让游戏回归乐趣的终极助手
  • AI创业黄金赛道:基于百度MCP广场的智能推荐服务,打造AI时代的“应用商店“
  • TVA在电子元器件领域的创新应用(5)
  • AI编码代理实战:如何高效协作,提升全栈开发效率与避坑指南
  • CDH 6.3.2生产实战:Cloudera Manager运维与YARN/HDFS/Spark调优
  • Studio 3T无限试用失效了?别急,试试这个更稳的Windows开机自启脚本(附完整.bat文件)
  • 嵌入式GUI开发新思路:用ASCII协议驱动手机App界面
  • 使用 TaoToken CLI 工具快速配置多个开发环境中的 API 密钥
  • 哔哩下载姬技术探索:5分钟掌握B站视频批量下载与高级处理
  • ARM调试寄存器与跟踪寄存器深度解析
  • ngx_hash_find
  • AArch64指令集属性寄存器解析与应用
  • Browser-Use实测:不写一行代码,AI帮我完成了80%的Web自动化测试
  • 3步掌握ComfyUI Reactor:AI换脸终极指南
  • 如何快速配置Blender 3MF插件:完整安装与使用教程
  • THC-IPv6 攻击工具包:IPv6 渗透测试
  • 智能游戏助手深度技术解析:从算法架构到实战应用
  • 母婴商城(源码+毕设)
  • 磁电式与霍尔传感器到底怎么选?从洗衣机振动监测到电动车踏板,聊聊工业与消费电子的选型实战
  • 死刑复核阶段的“刀下留人”——张某某毒品案的量刑辩护 - 品牌排行榜
  • 用Python从零实现SMO算法:手把手教你搞定SVM训练(附完整代码与可视化)
  • 线性代数期末救命!用行列式7大性质快速化简上三角(附Python代码验证)