一、反射型、存储型、DOM型XSS特点和区别
-
反射型XSS:
- 特点:攻击者将恶意脚本嵌入到URL中,当用户访问该URL时,浏览器会执行其中的脚本。这种类型的XSS攻击通常用于钓鱼网站或诱使用户点击恶意链接。
- 工作原理:攻击者构造一个包含恶意脚本的链接,诱使用户点击。用户点击后,服务器将恶意脚本反射到响应中,用户的浏览器执行这些脚本。
-
存储型XSS:
- 特点:攻击者在目标网站的数据存储区(如数据库、评论区等)中注入恶意脚本。一旦这些脚本被保存并显示给其他用户,任何访问该页面的人都会执行恶意脚本。
- 工作原理:攻击者将恶意脚本注入到网站的数据库或文件系统中。当其他用户浏览受影响的页面时,恶意脚本从服务器端获取并执行。
-
DOM型XSS:
- 特点:攻击者通过修改DOM结构,在用户的浏览器中执行恶意脚本。这种类型的XSS攻击通常发生在动态网页中,攻击者通过构造特定的URL或操作DOM元素来触发脚本执行。
- 工作原理:恶意脚本在浏览器端执行,而不是在服务端执行。攻击者构造特殊的URL,将恶意代码注入到用户的浏览器中,当用户访问该URL时,浏览器解析并执行恶意代码。
防御措施:
- 对用户输入进行验证和过滤,确保数据符合预期格式,并对特殊字符进行转义或过滤。
- 输出编码,对从数据库或用户输入中获取的数据进行输出编码,正确转义特殊字符。
- 使用内容安全策略(CSP)限制资源加载和执行。
- 设置cookie为HttpOnly,防止通过JavaScript访问cookie。
二、关于字典
各类字典:GitHub - oldboot/FuzzDicts: FuzzDicts 字典,一个就够了。https://github.com/oldboot/FuzzDicts
字典的生成工具:
UserNameDictTools
是一款能根据用户姓名、生日等信息。生成输入自己的专属密码字典。同时支持将中文汉字姓名转换为拼音格式,支持多达11种拼音格式的转换。
工具特色
-
综合处理速度和准确度,选用了最新的拼音转换支持库。
-
支撑转成11种格式的用户名拼音(大家有什么好的建议,可以在公众号后台给我发消息留言)
-
对读入的中文汉字姓名列表文件进行编码识别,避免出现中文乱码问题。
-
对生成的字典进行文本去重,保证没有重复结果。
-
软件根目录放置了一个中文姓名字典,供大家使用。
使用指南
在作者的项目地址下载最新的工具包。
项目地址:https://github.com/abc123info/UserNameDictTools/releases
三、打靶训练
开始,靶场网址欢迎来到XSS挑战 (tesla-space.com)
第一关
发现修改标签,网页也会随之改变
查看网站源码,可以发现get传参name的值test插入了html里头
输入<script>alert()</script>
第二关
查看源码
需要闭合掉双引号,构造payload
第三关
尝试搜索
再查看源码
符号也被实体化了,我们利用这个事件来绕过<>号的过滤已达到执行js的目的,构造payload ' οnfοcus=javascript:alert() '
再次点击触发事件
第四关
查看源码
跟第三关用一样的,利用onfocus事件,构建payload
第五关
输入js语句,没有反应,发现语句被破坏
查看源码中,语句确实被破坏
用a标签的href 属性来构造
"><a href=javascript:alert(1)>test</a>