目录
漏洞原理
持久型 XSS,常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。 例如:alert(/xss/)
Low
渗透思路
textarea 标签无防护直接上 payload
<script>alert(1)</script>
Medium
渗透思路
标题 script 大小写绕过
<Script>alert(1)</Script>
源码对比
Low & Medium 源码
对比小结
Medium 比 Low 级别代码做了如下防护措施:
- 用 strip_tags 函数过滤 message 内容中的NULL字节、HTML和PHP标签
- 对 message 内容做 html 转义
- 替换 name 中的 script 标签
High
渗透思路
标题栏 img 标签绕过
<img src=1 onerror=alert(1)>
源码对比
Medium & High 源码
对比小结
与 Medium 相比,High 对标题栏中内容的 script 标签字符串进行匹配且不区分大小写
Impossible
源码对比
High & Impossible 源码
对比小结
Impossible 对所有用户输入做了如下措施:
- 校验 CSRF token
- html 编码,所有标题和文本栏中的特殊符号都会被转义,也就无法被有效解析
- 插入数据库执行采用参数化预编译编程
绕过
- 大小写绕过
- 关键字双写绕过
- 利用eval拼接关键字绕过
- 利用注释、标签的优先级
- 编码绕过
防御
- 过滤敏感字符或进行编码转义
- 针对特定类型数据进行格式检查
- 针对输入点的检查最好放在服务器端实现
- WAF