Web渗透测试之XSS攻击:基于DOM的XSS

前言

  本篇主要讲解什么是基于DOM的XSS漏洞,基于DOM的XSS漏洞产生的原因以及一般会在何处产生,最后讲解如何利用基于DOM的XSS漏洞(如XSS经典的窃取cookie、钓鱼等)。

基于DOM的XSS

  在讲解什么是基于DOM的XSS漏洞之前,我们先来看看什么是DOM。

什么是DOM

  所谓的DOM又称DOM树,全称为文档对象模型(Document Objeet Mode),是Web前端开发中使用到的一种模型。在前端开发中会使用到很多元素,如< title>、< h1>等,而为了方便使用这些已经定义的元素,将这些元素作为结点排成树状后,通过遍历这棵树,就可以很方便的调用这些元素。而这颗树就称为DOM树。
DOM树

基于DOM的XSS产生的原因

  当js脚本从url获得数据并将其传递到支持动态代码执行的接收器时,就会产生基于DOM的XSS漏洞。也就是说不规范的使用接收器时就会产生基于DOM的XSS漏洞。因此基于DOM的XSS漏洞一般产生于用户能够进行参数输入查询的地方。以下是一些常见的接收器:
document.write()
document.writeln()
document.domain
someDOMElement.innerHTML
someDOMElement.outerHTML
someDOMElement.insertAdjacentHTML
someDOMElement.onevent

如何手工挖掘基于DOM的XSS漏洞

  当我们进行手工挖掘基于DON的XSS漏洞时,可以先找找看网页使用了那些接收器,再输入任意参数,然后查看参数所在位置,最后尝试写入XSS脚本所在的上下文看脚本能否成功执行。需要注意的是,当接收器为js执行接收器时,我们输入的参数可能不会出现在DOM的任何位置,此时我们可以通过js调试器来追踪我们输入参数。

如何利用基于DOM的XSS漏洞

  在了解了相关知识后我们再来看看如何利用基于DOM的XSS漏洞。
  以下是靶场首页:
靶场首页
  输入随机参数进行查询后通过查看源码看看使用了那些接收器:
使用的接收器
  接着查看输入的参数所在的位置:
参数位置
  可以看到输入的参数出现在了img src中并且没有进行转码等处理。
接着写入以下脚本:

"><svg onload=alert(1)>

成功出现弹窗,表明写入的XSS成功执行:
出现弹窗
  到这一步就可以确定该处存在基于DOM的XSS漏洞。接下来就可以通过此漏洞构造虚假的URL诱使受害用户点击以获得cookie,与之前的反射型或存储型XSS基本一致。还可以利用window.location.assign(URL)将受害用户重定向到钓鱼网站。
写入以下脚本:

"><svg οnlοad=window.location.assign("http://www.baidu.com")>

执行结果将会将受害用户重定向到百度首页。

总结

  在知道基于DOM的XSS漏洞产生的原因后,我们可以通过使用接收器类型来初步寻找漏洞所在点,接着写入脚本验证能否成功执行,如果能够成功执行表明确实存在漏洞。接着利用该漏洞构造虚假URL盗取cookie或者将受害者重定向到钓鱼网站以窃取敏感信息。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSS(Cross-Site Scripting)是一种常见的网站安全漏洞,攻击者通过在网页中注入恶意脚本来攻击用户。以下是关于 XSS 的基础知识: 1. XSS 的原理:XSS 攻击利用了网站对用户输入的信任,攻击者将恶意脚本注入到网页中,当用户浏览该网页时,恶意脚本会在用户的浏览器中执行,从而达到攻击的目的。 2. XSS 的分类:XSS 可以分为三种主要类型:存储型(Stored XSS)、反射型(Reflected XSS)和 DOM 型(DOM-based XSS)。存储型 XSS 注入的恶意脚本被存储在目标网站的数据库中,当其他用户访问该页面时,恶意脚本会被执行。反射型 XSS 注入的恶意脚本通过 URL 参数传递给目标网站,目标网站在返回的页面中直接输出了这些恶意脚本,用户点击链接时脚本被执行。DOMXSS 则是利用了网页的 DOM 结构,通过修改 DOM 中的内容来触发漏洞。 3. XSS 的危害:XSS 攻击可以导致许多危害,包括盗取用户的敏感信息(如用户名、密码、cookie)、篡改网页内容、进行钓鱼攻击、传播恶意软件等。 4. 防御 XSS 的措施:为了防止 XSS 攻击,可以采取以下措施: - 输入验证和过滤:对用户输入的数据进行验证和过滤,过滤掉不可信的字符和脚本。 - 输出转义:将用户输入的数据进行转义,确保输出到网页时不会被浏览器解析为可执行的脚本。 - 使用 HTTP 头部中的 Content Security Policy(CSP)来限制网页的资源加载和执行。 - 设置 HttpOnly 属性来限制 JavaScript 对 cookie 的访问。 - 定期更新和修复网站的漏洞,以防止攻击者利用已知的 XSS 漏洞。 以上是关于 XSS 的基础知识,深入了解 XSS 攻击的原理和防御措施对于网站安全至关重要。在进行渗透测试时,理解 XSS 的工作原理和常见漏洞场景可以帮助你更好地发现和利用 XSS 漏洞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值