重邮实训第四天作业

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. 总结浏览器解析机制

浏览器解析机制的过程主要包括以下几个步骤:

  1. 加载资源:浏览器从服务器请求并加载HTML、CSS、JavaScript、图片等资源。

  2. HTML解析:浏览器将HTML文档解析成DOM(文档对象模型)树,表示页面的结构。

  3. CSS解析:浏览器解析CSS,生成CSSOM(CSS对象模型)树,表示样式信息。

  4. 合成树构建:将DOM树和CSSOM树结合,生成渲染树,决定页面上每个元素的样式和位置。

  5. 布局计算:浏览器根据渲染树计算每个元素的尺寸和位置,进行布局。

  6. 绘制:根据布局结果,将页面的内容绘制到屏幕上。

  7. JavaScript执行:解析并执行JavaScript代码,通常会修改DOM和CSSOM,从而影响页面的显示。

  8. 事件处理:处理用户输入和其他事件,更新页面或触发响应。

这些步骤通常是并行进行的,以优化页面加载性能。