DOM 型 XSS 演示(附链接)

简介: DOM 型 XSS 演示(附链接)

一、介绍

DOM(Document Object Model)型 XSS(Cross-Site Scripting)攻击是一种 Web 应用程序中的安全漏洞,其特点是攻击者成功地注入了恶意脚本,这些脚本在用户的浏览器中执行,从而导致恶意行为。DOM 型 XSS 攻击不同于传统的存储型 XSS,它发生在客户端,通过操作 DOM 实现攻击。

攻击步骤和原理:

恶意输入注入:

攻击者通过输入框、URL 参数等渠道将包含恶意脚本的输入数据提交到 Web 应用程序。

客户端DOM解析:

用户访问包含恶意输入的页面时,浏览器会解析 HTML 并构建 DOM 树。

DOM修改:

恶意脚本通过 JavaScrip t等方式对 DOM 进行修改。

脚本执行:

由于恶意脚本被插入到 DOM 中,浏览器在解析和执行 DOM 时会执行这些脚本,导致攻击成功。

防范措施:

输入验证和过滤:

对用户输入进行验证,仅接受合法和预期的输入。

输出转义:

在将用户输入嵌入到 DOM 中之前,对其进行适当的输出编码,防止执行恶意脚本。

安全的DOM操作:

避免使用容易受到攻击的 DOM 操作方法,如 innerHTML,而是使用更安全的 API。

Content Security Policy(CSP):

使用 CSP 头来限制允许加载和执行的脚本资源,减少 XSS 攻击的风险。

二、实操演示

环境准备:

测试:

打开咱们已经安装好了的 Pikachu 靶场,找到 DOM 型 xss 这一页面

尝试在输入框中输入一些值,然后点击 click me

输入框下方显示 what do you see,如果读者在这毫无头绪可以试试打开 F12

可以看到这个 button 按钮绑定了一个点击事件,咱们重新输入一些值仔细观察

这里多了个 div,插入了一个 标签链接,地址是输入的值

咱们再输入一些敏感值试试

可发现没有做过滤,咱们复制这个点击事件的函数到调试器中寻找

两条结果全部找出,笔者在这复制源代码供读者们仔细分析

分析:

function domxss(){
    var str = document.getElementById("text").value;
    document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
}

获取用户输入:

var str = document.getElementById("text").value;
  • 通过 document.getElementById("text") 获取页面上 id 为 "text" 的元素。
  • 使用 .value 获取该元素的值,即用户在该输入框中输入的内容。
  • 将获取的值赋给变量 str。

DOM 操作:

document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
  • 通过 document.getElementById("dom") 获取页面上 id 为 "dom" 的元素。
  • 使用用户输入的值 str 构建一个包含链接的 HTML 片段
  • 使用 .innerHTML 将动态生成的 HTML 内容插入到该元素的内部。

因为是插入到 HTML 标签内部,所以直接嵌入 JavaScript 标签不可行

这里先跟大家讲讲笔者最新发现的一种语法漏洞(原靶场作者只列出了两种)

攻击:

如果读者要想在 HTML 标签中执行 JavaScript 语法可以这样写

javascript:alert(/DOM 型 XSS 攻击成功/)

点击超链接时根据 href 属性跳转执行了 JavaScript 代码

这是更改链接,咱们还可以这样写

先闭合掉前面的废话

'

通过点击事件来让用户执行 JavaScript 代码

' οnclick="alert(/DOM 型 XSS 攻击成功/)"

发现闭合了 href 属性,点击事件也在里面,接下来就是模拟用户点击了

成功!别忘了 HTML 标签可以嵌套,所以咱们试试最后一种攻击方式

还是先闭合前面的 href 属性及 a 标签

'>

插入咱们想插入的标签

'>< img src="#" οnmοuseοver="alert(/DOM 型 XSS 攻击成功/)"

当用户鼠标移上去时就会弹窗被攻击

到这里基本上就结束啦,如果读者觉得对您有帮助麻烦评论点点赞收藏和关注,谢谢支持!!


相关文章
|
12月前
|
存储 安全 JavaScript
手摸手带你进行XSS攻击与防御
当谈到网络安全和信息安全时,跨站脚本攻击(XSS)是一个不可忽视的威胁。现在大家使用邮箱进行用户认证比较多,如果黑客利用XSS攻陷了用户的邮箱,拿到了cookie那么就可以冒充你进行收发邮件,那真就太可怕了,通过邮箱验证进行其他各种网站的登录与高危操作。 那么今天,本文将带大家深入了解XSS攻击与对应的防御措施。
|
8月前
|
JavaScript 安全 前端开发
同源策略如何防止 XSS 攻击?
【10月更文挑战第31天】同源策略通过对 DOM 访问、Cookie 访问、脚本执行环境和跨源网络请求等多方面的严格限制,构建了一道坚实的安全防线,有效地防止了 XSS 攻击,保护了用户在网络浏览过程中的数据安全和隐私。
224 49
|
8月前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
299 4
|
8月前
|
安全 Go PHP
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第27天】本文深入解析了Web安全中的XSS和CSRF攻击防御策略。针对XSS,介绍了输入验证与净化、内容安全策略(CSP)和HTTP头部安全配置;针对CSRF,提出了使用CSRF令牌、验证HTTP请求头、限制同源策略和双重提交Cookie等方法,帮助开发者有效保护网站和用户数据安全。
230 2
|
8月前
|
存储 安全 Go
Web安全基础:防范XSS与CSRF攻击的方法
【10月更文挑战第25天】Web安全是互联网应用开发中的重要环节。本文通过具体案例分析了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的原理及防范方法,包括服务器端数据过滤、使用Content Security Policy (CSP)、添加CSRF令牌等措施,帮助开发者构建更安全的Web应用。
359 3
|
9月前
|
存储 JavaScript 前端开发
Xss跨站脚本攻击(Cross Site Script)
Xss跨站脚本攻击(Cross Site Script)
|
8月前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
204 0
|
10月前
|
存储 安全 JavaScript
XSS跨站脚本攻击详解(包括攻击方式和防御方式)
这篇文章详细解释了XSS跨站脚本攻击的概念、原理、特点、类型,并提供了攻击方式和防御方法。
2793 1
|
12月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
181 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
|
9月前
|
存储 JavaScript 安全