重邮实训第四天作业
1. 总结反射型、存储型、DOM型XSS特点和区别
XSS(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者通过将恶意脚本注入到网页中,从而获取用户的敏感信息、劫持用户会话等。根据攻击触发的方式和攻击代码的存储方式,XSS可以分为以下三种主要类型:反射型XSS、存储型XSS和DOM型XSS。下面是它们的特点和区别:
1. 反射型XSS(Reflected XSS)
特点:
- 触发方式:反射型XSS攻击的恶意脚本是通过URL参数、HTTP请求头或者其他输入字段被直接传递到服务器端,然后由服务器将其反射到响应页面中。通常,这种脚本在服务器端没有存储,而是立即反射到用户的浏览器中。
- 攻击链:攻击者通常通过诱导用户点击包含恶意脚本的链接来触发攻击。这些链接可能通过电子邮件、社交媒体或其他方式传播。
- 存储方式:攻击代码不被存储在服务器端,只是在一次请求和响应周期中存在。
- 例子:攻击者构造一个包含恶意JavaScript代码的URL,并诱使用户点击,恶意代码会被执行。
特点:攻击依赖于用户与特制URL或表单的互动,通常需要用户点击链接或提交表单。
2. 存储型XSS(Stored XSS)
特点:
- 触发方式:存储型XSS攻击的恶意脚本被存储在服务器端的数据库、文件系统、或其他存储机制中。当其他用户访问包含恶意脚本的页面时,脚本被从存储中提取并执行。
- 攻击链:攻击者将恶意脚本提交到网站的可存储区域(如评论区、论坛帖子、用户资料等),一旦存储,任何访问该存储内容的用户都会被攻击。
- 存储方式:攻击代码被持久存储在服务器端,所有访问该存储内容的用户都会受到影响。
- 例子:攻击者在评论区中输入恶意JavaScript代码,该代码在其他用户查看该评论时被执行。
特点:这种攻击不依赖于用户立即交互,而是利用持久存储的恶意脚本感染所有访问该页面的用户。
3. DOM型XSS(DOM-based XSS)
特点:
- 触发方式:DOM型XSS攻击是通过客户端脚本(通常是JavaScript)对页面进行操作来触发的。恶意脚本直接在客户端浏览器中执行,而不是通过服务器端处理的响应。
- 攻击链:攻击者可能利用JavaScript中的DOM操作来修改页面内容或通过URL、表单输入等方式影响客户端脚本,从而注入和执行恶意代码。
- 存储方式:没有直接的服务器端存储,攻击代码仅在客户端通过浏览器的DOM被注入和执行。
-
例子:恶意JavaScript代码通过操作URL的片段标识符(如
#
后面的内容)注入到页面中,页面中的JavaScript脚本可能会错误地处理这些内容并执行恶意代码。
特点:攻击依赖于客户端JavaScript代码的处理方式,与服务器端响应无关,通常涉及对DOM的操作。
2. 上网搜索一份XSS 的fuzz字典或字典生成工具
https://github.com/fuzzdb-project/fuzzdb
https://github.com/TheKingOfDuck/fuzzDicts
https://github.com/TuuuNya/fuzz_dict
https://github.com/jas502n/fuzz-wooyun-org
3、到XSS挑战靶场打靶。
连接:欢迎来到XSS挑战 (tesla-space.com)
第一关
发现有参数传递“?name=test”
把 name 传入的参数替换为 js 代码
<script>alert(0)</script> |
第二关
输入不同内容页面显示没有找到该内容,且发现 url 中的 keyword 参数也在随之变化
F12 注意到提交内容为 input 标签的 value。
构造 payload 时将 input 标签闭合之后在写 js 代码
666"><script>alert(0)</script> |
完成
第三关
页面和 level2 相似,且 url 也相差无几,使用第二关的 payload 尝试失败。
查看网页源代码寻找突破口,发现搜索处在value变量的地方,输入的用于闭合的双引号被实体化了
构造的 payload 如下
' onclick='alert(666) //这样点击输入框就可以触发了 |
|
' onmouseover='alert(666) //这样鼠标放到输入框上就可以触发了 |
第四关
输入123搜索
查看源代码查找突破口,使用了双引号闭合
把第三关的payload中的单引号改成双引号,payload如下:
"onclick="alert(666) |
第五关
尝试注入发现 script 和 on 替换为 scr_pt 和 o_n
在这里学到使用 a 标签的 href 导入 js 代码进行注入,payload 如下
"><a href=javascript:alert(666)>666 |
4. 总结浏览器解析机制
浏览器解析机制的过程主要包括以下几个步骤:
-
加载资源:浏览器从服务器请求并加载HTML、CSS、JavaScript、图片等资源。
-
HTML解析:浏览器将HTML文档解析成DOM(文档对象模型)树,表示页面的结构。
-
CSS解析:浏览器解析CSS,生成CSSOM(CSS对象模型)树,表示样式信息。
-
合成树构建:将DOM树和CSSOM树结合,生成渲染树,决定页面上每个元素的样式和位置。
-
布局计算:浏览器根据渲染树计算每个元素的尺寸和位置,进行布局。
-
绘制:根据布局结果,将页面的内容绘制到屏幕上。
-
JavaScript执行:解析并执行JavaScript代码,通常会修改DOM和CSSOM,从而影响页面的显示。
-
事件处理:处理用户输入和其他事件,更新页面或触发响应。
这些步骤通常是并行进行的,以优化页面加载性能。