一、XSS漏洞的特点
描述:
跨站脚本攻击(Cross-site Scripting,通常称为XSS),是一种典型的Web程序漏洞利用攻击。攻击者利用Web程序对用户输入检查不足的漏洞将可执行恶意脚本注入网站或Web应用,当用户访问网页时触发恶意脚本的执行,从而达到窃取用户个人数据、弹出广告,甚至篡改网页内容等攻击目的。在线论坛、博客、留言板等共享平台是跨站脚本攻击的典型目标。
跨站脚本攻击是一种客户端代码注入攻击,恶意脚本在前端浏览器或Web应用程序等客户端侧执行,而非在后端服务器或数据库执行,最终受害者是访问用户。
类型区别:
1、反射型:
反射型跨站脚本攻击就是注入脚本作为客户端的请求提交给Web服务器,服务器解析后在响应消息中返回脚本由浏览器执行。因此攻击者需要使用钓鱼邮件、弹窗链接以及其他社会工程学方法引诱用户点击链接向Web服务器发出请求。
2、存储型:
存储型跨站脚本攻击也称为持久型跨站脚本攻击,注入的脚本永久存储在Web服务器上,如数据库、内存或文件系统中。只要注入脚本代码没有被清理,每次用户访问网页时都将加载恶意脚本。
3、DOM型:
基于DOM(Document Object Model,文档对象模型)的跨站脚本攻击通过篡改DOM注入恶意脚本。DOM提供对文档结构化的描述,并将HTML页面与脚本、程序语言联系起来,当网页被加载时,浏览器会创建页面的文档对象模型DOM。Web程序的客户端侧JavaScript脚本可以对DOM进行编辑从而动态修改网页内容,也就是从DOM获取数据然后在用户本地执行。在这个过程中,如果数据处理不当,攻击者就可以将恶意脚本注入DOM,然后读取DOM数据时触发攻击。经常被利用的DOM对象包括URL 、URL 锚点部分和Referrer。
二、XSS的fuzz字典
easyXssPayload/easyXssPayload.txt at master · TheKingOfDuck/easyXssPayload · GitHub
fuzzDicts: Web Pentesting Fuzz 字典,一个就够了。 (gitee.com)
三、靶场实践
第一关:
直接在url后尝试最简单的,<script>alert(1)</script>
第二关:
继续第一关的方法,没成功
看看源代码
闭合双引号, "> ...... <"
"> <script>alert()</script> <",成功
第三关:
试一下前面的手段,都不行
又试一下闭合单引号,也没用
可以看出<>都被转化为 < >
故采取' onmouseover ='alert()绕过<>的过滤,同时闭合 '
(onmouseover鼠标移动到特定位置触发)
第四关:
直接先看
看完代码尝试闭合
<>会被过滤掉
为绕过<>的过滤,选择" onmouseover ="alert(),同时闭合双引号
第五关:
输入<>看看过滤情况
没过滤,尝试"><script>alert(1)</script><"
又试了下" onmouseover ="alert()
可以看出都被添加了下划线干扰语句
采取<a href=".........">..........</a> (定义链接的指向)
"> <a href="javascript:alert()">点这里</a> <"