某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

    • 说明
    • 笔记-服务端主题

    • 笔记-客户端主题

      • XSS笔记
        • XSS载荷备忘录(嘎嘎好用)
        • 基本知识
          • 1、什么是跨站脚本(XSS)?
          • 2、XSS的工作原理?
          • 3、除了alert()以外,还可以使用哪个通用函数进行XSS概念验证?
          • 4、XSS攻击有哪些类型?
          • 5、XSS可以用来做什么?
          • 6、XSS漏洞的影响?
          • 7、如何查找和测试XSS漏洞
        • 反射型XSS
          • 1、什么是反射型XSS?
          • 2、有关反射型跨站脚本的常见问题
        • 存储型XSS
          • 1、什么是存储型XSS?
        • DOM型XSS
          • 1、什么是DOM型XSS?
          • 2、第三方依赖项中的源和接收器
          • 3、结合型DOM XSS
          • 4、哪些接收器会导致DOM-XSS漏洞?
        • XSS上下文
          • 1、位于HTML标签之间的XSS
          • 2、位于HTML标签属性中的XSS
          • 3、位于JavaScript中的XSS
          • 4、通过客户端模板注入实现XSS
        • 利用XSS漏洞
        • 内容安全策略(CSP)
          • 1、什么是CSP(内容安全策略)?
          • 2、使用CSP缓解XSS攻击
          • 3、使用CSP缓解悬挂标记攻击
          • 4、使用CSP防止点击劫持
          • 5、通过策略注入绕过CSP
        • 悬挂标记注入
          • 1、什么是悬挂标记注入?
          • 2、如何防范悬挂标记攻击
        • 客户端模板注入
          • 1、什么是客户端模板注入?
          • 2、什么是AngularJS沙箱?
          • 3、AngularJS沙箱的工作原理?
          • 4、AngularJS沙箱逃逸
          • 5、借助AngularJS绕过CSP
          • 6、如何防范客户端模板注入漏洞?
        • 如何防范XSS
      • CSRF笔记
      • CORS笔记
      • 点击劫持笔记
      • 基于DOM的漏洞笔记
      • WebSockets笔记
    • 笔记-高级主题

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 个人学习笔记
  • 笔记-客户端主题
carsaid
2024-03-05
目录

XSS笔记

个人总结

参考:https://portswigger.net/web-security/cross-site-scripting

- name: 个人总结
  desc: 参考:https://portswigger.net/web-security/cross-site-scripting
  bgColor: '#F0DFB1'
  textColor: 'green'
1
2
3
4

# XSS笔记

# 0XSS载荷备忘录(嘎嘎好用)

XSS载荷备忘录 (opens new window)

# 1基本知识

# 1、什么是跨站脚本(XSS)?

答案

跨站脚本(也称为 XSS)是一个 Web 安全漏洞,允许攻击者破坏用户与应用程序之间的交互,同时还能够绕过同源策略。

跨站脚本漏洞通常允许攻击者伪装成受害用户、执行用户能够执行的任何操作、以及访问用户的任何数据。如果受害用户在应用程序中拥有特权访问权限,则攻击者可能完全控制应用程序的所有功能和数据。

# 2、XSS的工作原理?

答案

跨站脚本的工作原理是:

  • 操纵易受攻击的网站,以便将恶意 JavaScript 返回给用户。
  • 当恶意代码在受害者的浏览器中执行时,攻击者可以完全破坏他们与应用程序的交互。

# 3、除了alert()以外,还可以使用哪个通用函数进行XSS概念验证?

答案

PortSwigger 建议使用print()函数。如果你有兴趣,想了解更多关于此变化的信息,以及 PortSwigger 为什么喜欢print(),请查看他们关于该主题的博客文章《alert()已死, print()万岁》。

# 4、XSS攻击有哪些类型?

答案
  • 反射型 XSS
  • 存储型 XSS
  • DOM型XSS

# 5、XSS可以用来做什么?

答案

利用跨站脚本漏洞的攻击者通常能够:

  • 冒充或伪装成受害用户。
  • 执行用户能够执行的任何操作。
  • 读取用户能够访问的任何数据。
  • 捕获用户的登录凭据。
  • 对网站进行虚拟污损。
  • 将特洛伊木马功能程序注入网站。

(“虚拟污损” 又被称为 “内容欺骗” 或 “内容注入”,详细信息可参考OWASP文章 (opens new window))

# 6、XSS漏洞的影响?

答案

XSS 攻击的实际影响,通常取决于应用程序的性质、功能和数据 以及受影响用户的状态。例如:

  • 在宣传类的软件应用程序中,所有用户都是匿名的,所有信息都是公开的,影响通常很小。
  • 在保存敏感数据(如银行交易、电子邮件或医疗记录)的应用程序中,影响通常会很严重。
  • 如果受影响的用户 在应用程序中具有更高的权限,则影响通常很严重,这允许攻击者完全控制易受攻击的应用程序,并危害所有用户及其数据。

# 7、如何查找和测试XSS漏洞

答案
  • 手动:将一些简单的唯一输入(例如短的字母数字字符串)提交到应用程序中的每个入口点,识别 HTTP 响应中返回所提交输入的每个位置,并单独测试每个位置,以确定是否可以构造适当的输入,来执行任意 JavaScript。
  • 自动:使用一些自动化的 Web 漏洞扫描工具。

# 2反射型XSS

# 1、什么是反射型XSS?

答案

当应用程序在 HTTP 请求中接收数据,并以不安全的方式 将该数据包含在即时响应中时,就会出现反射型跨站脚本(XSS)。

# 2、有关反射型跨站脚本的常见问题

  • 反射型 XSS 和存储型 XSS 有什么区别?
  • 反射型 XSS 和 Self-XSS 有什么区别?
答案

反射型 XSS 和存储型 XSS 有什么区别?当应用程序从 HTTP 请求中获取一些输入,并以不安全的方式将该输入嵌入到即时响应中时,就会出现反射型 XSS。对于存储型 XSS,应用程序会将输入进行存储,并以不安全的方式将其嵌入到稍后的响应中。

反射型 XSS 和 Self-XSS 有什么区别?Self-XSS 与常规反射型 XSS 拥有着类似的应用程序行为,但它不能以正常方式触发,例如构造 URL 或通过跨域请求触发。相反,只有当受害者从他自己的浏览器中提交 XSS 载荷时,才会触发该漏洞。想要利用 Self-XSS 攻击,通常需要对受害者进行社会工程,诱使受害者将攻击者提供的一些输入粘贴到他们的浏览器中。因此,它通常被认为是一个蹩脚的、低影响的问题。

# 3存储型XSS

# 1、什么是存储型XSS?

答案

当应用程序从不受信任的源接收数据,并以不安全的方式将这些数据包含在其之后的 HTTP 响应中时,就会出现存储型跨站点脚本(也称为二阶或持久性 XSS)。

# 4DOM型XSS

# 1、什么是DOM型XSS?

答案

当 JavaScript 从攻击者可控制的来源(如 URL)中获取数据,并将其传递给支持动态代码执行的接收器(如eval()或innerHTML)时,通常会出现 DOM型XSS 漏洞。这使得攻击者能够执行恶意 JavaScript,并允许他们劫持其他用户的帐户。

要想造成 DOM型XSS 攻击,你需要将数据放入源中,以便将其传播到接收器,并导致执行任意 JavaScript。

# 2、第三方依赖项中的源和接收器

  • jQuery 中的 DOM XSS
  • AngularJS 中的 DOM XSS

# 3、结合型DOM XSS

  • 反射型 DOM XSS
  • 存储型 DOM XSS

# 4、哪些接收器会导致DOM-XSS漏洞?

以下是可能导致 DOM-XSS 漏洞的一些主要接收器:

document.write()
document.writeln()
document.domain
element.innerHTML
element.outerHTML
element.insertAdjacentHTML
element.onevent
1
2
3
4
5
6
7

以下 jQuery 函数也是可能导致 DOM-XSS 漏洞的接收器:

add()
after()
append()
animate()
insertAfter()
insertBefore()
before()
html()
prepend()
replaceAll()
replaceWith()
wrap()
wrapInner()
wrapAll()
has()
constructor()
init()
index()
jQuery.parseHTML()
$.parseHTML()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 5XSS上下文

# 1、位于HTML标签之间的XSS

当 XSS 上下文位于 HTML 标签之间的文本时,你需要引入一些新的 HTML 标签来触发 JavaScript 的执行。

# 2、位于HTML标签属性中的XSS

当 XSS 上下文进入 HTML 标签的属性值中时,可以尝试终止属性值、闭合原标签并引入新标签。

# 3、位于JavaScript中的XSS

当 XSS 上下文位于响应中的一些现有 JavaScript 中时,可能会出现各种各样的情况,若想成功执行漏洞利用,则需要使用不同的技术。

答案
  • 终止现有脚本
  • 脱离JavaScript字符串
  • 利用 HTML 编码
  • JavaScript模板字面量中的XSS

# 4、通过客户端模板注入实现XSS

一些网站使用客户端模板框架(如 AngularJS)来动态渲染网页。如果他们以不安全的方式,将用户输入嵌入到这些模板中,则攻击者也许能够注入自己的恶意模板表达式,从而发起 XSS 攻击。

学习更多

客户端模板注入

# 6利用XSS漏洞

一些利用 XSS 漏洞的方式:

答案
  • 利用跨站脚本窃取 Cookie
  • 利用跨站脚本捕获密码
  • 利用跨站脚本执行 CSRF

# 7内容安全策略(CSP)

# 1、什么是CSP(内容安全策略)?

答案

CSP 是一种浏览器安全机制,旨在缓解 XSS 和其他一些攻击。它的工作原理是限制页面可以加载的资源(如脚本和图像),并限制当前页面 是否可以被其他页面载入。

若要启用 CSP,需要在响应中包含一个名为Content-Security-Policy的 HTTP 响应标头,其值应包含策略。策略本身由一个或多个指令组成,用分号分隔。

# 2、使用CSP缓解XSS攻击

# 3、使用CSP缓解悬挂标记攻击

# 4、使用CSP防止点击劫持

# 5、通过策略注入绕过CSP

# 8悬挂标记注入

# 1、什么是悬挂标记注入?

# 2、如何防范悬挂标记攻击

# 9客户端模板注入

# 1、什么是客户端模板注入?

答案

当应用程序使用了客户端模板框架,并在网页中动态嵌入用户输入时,就会出现客户端模板注入漏洞。

当渲染一个页面时,框架会扫描页面内容,以查找模板表达式,并执行它遇到的任何表达式。攻击者可以提供恶意的模板表达式,从而发起跨站脚本(XSS)攻击。

# 2、什么是AngularJS沙箱?

答案

AngularJS 沙箱是一种机制,可以防止 AngularJS 模板表达式访问潜在的危险对象,例如window或document。它还可以防止 访问潜在的危险属性,例如__proto__。

尽管 AngularJS 团队不认为它是一个安全隐患,但更广泛的开发者社区通常不这么认为。虽然 “沙箱绕过” 最初具有挑战性,但安全研究人员已经发现了许多绕过方法。因此,该特性最终在 AngularJS 1.6 版本中被删除。但是,许多遗留应用程序仍然使用旧版本的 AngularJS,因此可能容易受到攻击。

# 3、AngularJS沙箱的工作原理?

# 4、AngularJS沙箱逃逸

# 5、借助AngularJS绕过CSP

# 6、如何防范客户端模板注入漏洞?

答案

为防范客户端模板注入漏洞,请避免使用 不受信任的用户输入 来生成模板或表达式。如果这不可行,请考虑 在将模板表达式语法嵌入到客户端模板之前,从用户输入中过滤掉模板表达式语法。

请注意,HTML 编码不足以防范客户端模板注入攻击,因为框架在查找和执行模板表达式之前,会对相关内容执行 HTML 解码。

# 10如何防范XSS

注意

内容安全策略(CSP)是防范跨站脚本攻击的最后一道防线。

如果前面执行的 XSS 防护都失败了,则可以使用 CSP 限制攻击者的行为来缓解 XSS。

答案
  • 对输出数据进行编码
  • 在接收时验证输入
  • 仅允许安全的 HTML 标签和属性(白名单)(不推荐,因为存在浏览器解析引擎的差异 和 变种 XSS 等怪异载荷)
  • 使用模板引擎防范XSS
  • 各类代码示例
    • 如何在PHP中防范XSS
    • 如何在客户端JavaScript中防范XSS
    • 如何在jQuery中防范XSS
  • 使用内容安全策略(CSP)缓解XSS
编辑 (opens new window)
API测试笔记
CSRF笔记

← API测试笔记 CSRF笔记→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式