第四次作业

1.总结反射型、存储型、DOM型XSS特点和区别

XSS(跨站脚本) 漏洞是指攻击者能够在网页中注入恶意脚本,从而影响其他用户的浏览器。根据攻击的不同方式,XSS 漏洞可以分为以下三种类型:反射型 XSS、存储型 XSS 和 DOM 型 XSS。以下是它们的详细特点和区别:

1. 反射型 XSS

特点

  • 即时性:攻击者将恶意脚本嵌入到 URL 参数、查询字符串或请求头中,服务器将该内容反射回客户端。用户点击包含恶意参数的链接时,恶意脚本被执行。
  • 无持久存储:恶意脚本并不存储在服务器端或数据库中,每次攻击都需要用户点击带有恶意代码的链接。
  • 短生命周期:攻击只在用户点击恶意链接的那一刻生效,通常不影响其他用户,除非他们也点击了相同的链接。

触发方式

  • 用户点击攻击者构造的包含恶意脚本的 URL。
  • 恶意脚本作为参数提交到服务器,服务器将其直接嵌入到响应页面中,导致脚本在客户端执行。

利用场景

  • 常见于 URL 中未对输入进行适当过滤的情况,如搜索框、表单提交等。

2. 存储型 XSS

特点

  • 持久性:攻击者将恶意脚本存储在服务器端(如数据库、文件系统、用户资料中),当其他用户访问受影响页面时,恶意脚本会被触发。
  • 广泛性:一旦脚本被存储,所有访问该内容的用户都会受到影响,因此潜在影响面较大。
  • 长生命周期:存储型 XSS 攻击可以长期存在,直到存储内容被删除或修改。

触发方式

  • 攻击者将恶意代码存储在用户评论、论坛帖子、个人资料等地方。
  • 其他用户访问这些存储有恶意代码的页面时,恶意脚本会执行。

利用场景

  • 常见于允许用户提交内容的场景,如评论区、论坛、博客等。存储型 XSS 攻击依赖于服务器端对用户输入未进行适当处理。

3. DOM 型 XSS

特点

  • 客户端执行:攻击者通过操控客户端 JavaScript 代码或 DOM 结构来注入恶意脚本,这些脚本不会经过服务器端。
  • 不依赖服务器反射:恶意脚本直接在浏览器中操作 DOM,不需要服务器端的参与。
  • 灵活性:攻击者可以利用客户端代码中的漏洞,如 URL 解析、浏览器存储等,来注入恶意脚本。

触发方式

  • 攻击者通过操控页面中的 URL、文档对象模型(DOM)或 JavaScript 代码,注入恶意脚本。
  • 攻击可能利用客户端脚本中的漏洞,如未经过滤的用户输入直接用于操作 DOM。

利用场景

  • 常见于客户端脚本对用户输入处理不当的情况,例如未对 URL 中的参数进行适当过滤和编码,导致恶意脚本被直接插入到 DOM 中。

区别总结

  • 攻击路径

    • 反射型 XSS:恶意脚本作为请求的一部分被反射回客户端。
    • 存储型 XSS:恶意脚本存储在服务器端,当用户访问存储内容时被触发。
    • DOM 型 XSS:恶意脚本直接通过客户端脚本操作 DOM 被注入,不经过服务器。
  • 持久性

    • 反射型 XSS:一次性,需每次都通过特定链接触发。
    • 存储型 XSS:持久存在于服务器端,所有访问存储内容的用户都会受到影响。
    • DOM 型 XSS:在客户端发生,不依赖服务器存储,脚本注入的效果通常依赖于客户端的处理方式。
  • 触发机制

    • 反射型 XSS:需要用户点击包含恶意代码的链接。
    • 存储型 XSS:用户访问受感染的页面或内容时触发。
    • DOM 型 XSS:用户浏览器中的客户端脚本直接触发。

2.XSS 的fuzz字典或字典生成工具

XSS Fuzz 字典

对于 XSS 漏洞测试,以下是一些常用的 fuzz 字典或字典生成工具:

  1. FuzzDB:一个开源的 fuzz 测试字典库,包含了多种漏洞测试词汇,包括 XSS。GitHub - fuzzdb-project/fuzzdb: Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.​​​​​​
  2. SecLists:包含各种安全测试字典,包括用于 XSS 的 payload。                                          GitHub - danielmiessler/SecLists: SecLists is the security tester's companion. It's a collection of multiple types of lists used during security assessments, collected in one place. List types include usernames, passwords, URLs, sensitive data patterns, fuzzing payloads, web shells, and many more.
  3. XSS Payloads:专门针对 XSS 漏洞的 payload 集合,可用于 fuzz 测试。https://github.com/irwinnz/XSS-Payloads
  4.  OWASP Fuzzing Payloads:OWASP 提供了一些基本的 XSS 测试负载,适用于安全测试和漏洞发现。 OWASP Fuzzing Payloads

字典生成工具

  1. Fuzzdb

    说明:Fuzzdb 是一个用于安全测试的字典库,包含各种攻击向量和模糊测试用例,包括 XSS。GitHub: Fuzzdb
  2. XSS-Patrol

    说明:XSS-Patrol 是一个用于生成 XSS 测试负载的工具,支持自定义和扩展字典。GitHub: XSS-Patrol

3.到XSS挑战靶场打靶

https://xss.tesla-space.com/

第一关

第二关

<input> 标签的 value 属性中 <script> 注入被过滤或不生效,可以尝试一些不同的编码或变体,以绕过过滤器。使用 oninput 事件时,输入框的内容会在用户输入时触发事件。可以通过这种方式尝试注入 XSS 代码。

test" οninput="alert('XSS')

第三关

查看源码发现input和value单引号

  • value=' 之后添加闭合单引号 ,结束 value 属性的值。
  • 然后加上一个闭合 > 来结束 input 标签。
  • 最后插入XSS 脚本代码 <script>alert("XSS")</script>.
  • "><script>alert("XSS")</script><"

发现书名号被修改使用

' οnfοcus=alert(1) '

  • ' 关闭当前属性值。
  • onfocus=alert(1) 在元素获得焦点时触发 alert(1),通常应用于 input 或其他可获得焦点的元素。

第四关

使用了双引号' οnfοcus=alert(1) 改为" οnfοcus="alert(1)

第五关

试一下" οnfοcus="alert(1)发现被下划线破坏

  • <a> 标签:用于创建一个超链接。
  • href="javascript:alert('xss')":这个属性设置了点击链接时执行的 JavaScript 代码。javascript: 协议允许在 href 属性中直接执行 JavaScript 代码。
  • href 属性在 HTML <a> 标签中指定链接的目标 URL。它可以指向网页、文件、锚点或使用 JavaScript 执行的代码。
"><a href="javascript:alert('xss')">click me</a><"

4.浏览器解析机制

  1. 解析 HTML

    • 词法分析:浏览器将 HTML 文档分解为标记(tokens)。

    • 语法分析:这些标记被转化为 DOM 节点,形成树结构,节点包括元素节点、文本节点和注释节点。

    • 构建 DOM:将所有节点链接起来形成完整的 DOM 树,表示 HTML 结构。
  2. 解析 CSS

    • 词法分析:CSS 代码被解析成规则集(ruleset),包括选择器和声明。
    • 语法分析:将规则集转化为 CSSOM 树,包含所有样式规则和它们的优先级。
    • 计算优先级:应用样式时,浏览器会计算样式的优先级,以确定哪些样式最终生效。
  3. 构建渲染树

    • 合成渲染树:结合 DOM 和 CSSOM,浏览器创建渲染树。每个渲染树节点对应一个实际显示的元素(如文本、图片)。
    • 排除不可见元素:例如,display: none 的元素不会出现在渲染树中。
  4. 布局

    • 计算位置和尺寸:根据渲染树,浏览器计算每个元素的确切位置和大小。这包括处理各种布局模型(如块级布局、内联布局)。
    • 流式布局:大多数元素采用流式布局,即依据文档流自动定位。绝对定位或浮动元素的布局则会被单独计算。
  5. 绘制

    • 绘制层次:将渲染树中的每个节点绘制到屏幕上。这包括背景色、边框、文本、阴影等视觉效果。
    • 分层绘制:浏览器可能将页面分成多个层次(layers),每层单独绘制,然后合成到一起。这有助于优化性能,特别是在处理复杂的动画和滚动时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值