文章目录
- XSS(Dom)
- low
- medium
- high
- impossible
XSS(Dom)
XSS 主要基于JavaScript语言进行恶意攻击,常用于窃取 cookie,越权操作,传播病毒等。DOM全称为Document Object Model,即文档对象模型,此类XSS 漏洞不需要服务器解析响应,不依赖服务器的数据,直接从浏览器获取数据并执行。
low
- 查看页面,发现点击 select 后在地址栏里传输了参数,只有这个地方可以尝试进行攻击:
- 在地址栏里输入一个简单的 js 语句,进行弹框,页面确实执行了此 js 语句,攻击成功。
medium
-
尝试 low 中的方式输入 <script> 发现没有弹框,猜想可能 <script> 被过滤。查看源码果然是:
-
可尝试使用其他脚本语句进行攻击:
//</option>和</select> 是F12查看页面代码时发现要闭合前面的标签
//onerror 表示如果加载图片失败则执行后面的语句
</option></select><img src=x onerror=alert(1)>
high
-
使用上述两种方式都无法注入,查看源码发现代码里对 default 参数进行了匹配,只允许特定的值存在:
-
但是代码只对 default 参数进行了校验,此种情况可以通过 & 连接符拼接参数进行攻击:
&<script>alert(1)</script>
impossible
impossible 中没有进行特别的操作,只是在前端写代码时没有对参数进行解码,这样输入的参数都会经过URL编码,直接赋值给页面,不存在 xss dom 漏洞。
总结一下,避免 xss dom 漏洞可以通过以下方式:
- 对所有的输入进行严格的校验,过滤常见的 js 标签;
- 对用户输入进行编码,确保所有的 js 语句都不会被执行。