DOM XSS

0x01.是什么??

    DOM XSS 本质上是一种不涉及服务端的纯前端漏洞,通过浏览器端解析造成攻击。在浏览器端解析修改DOM树,由于前端代码在浏览器相当于‘公开’的,DOM XSS这类漏洞容易被分析发现。而且DOM XSS 重要的优势是它可以绕过waf

0x02.DOM XSS 有哪些场景?

一般的攻击方法是:攻击者构造一个URL,诱发用户点击,用户点击后,URL可以利用DOM XSS漏洞获取用户的cookie信息

一、URL代入页面

这类DOM-XSS是最常见的,它的漏洞点通常是以下形式出现。

//www.a.com?name=a&sex=man
//这里面可以对param进行过滤操作,但也有很多绕过技巧,这里不做详细叙述

let param = window.location.search
a.innerHtml = param

它出现的地方比较多,可能会是名称,地点,标题等等。

大多数情况下它和反射型XSS的区别不大,最大的区别是取的值不同。

二、跳转类

在 javascript 语法中,使用如下代码可以将页面进行跳转操作

window.location.href = userInput

这样的跳转通常会出现在登录页、退出页、中间页。

如果开发者让用户可以控制 userInput 参数,就可以使用 javascript:alert(1) 的形式进行XSS攻击。

最近几年的APP开发比较热门,通过web唤起APP的操作也是越来越多,跳转的协议也是多种多样,例如 webview:// , myappbridge:// 等等。 仅仅使用 http 和 https 来判断URL是否合法已经不适用了,于是由跳转所产生的DOM-XSS漏洞也逐渐增多。

三、缓存类

开发者在缓存前端数据的时候,通常会存在 sessionStorage , localStorage , cookie 中,因为 sessionStorage 在页面刷新时就失效的特性,利用方式相对简单的只有后面两种。

根据浏览器的同源策略,Cookie是可以被子域名读到的。 一旦我们发现在 http://example.com/setCookie.php?key=username&value=password 下可以设置Cookie,就可以结合一些读取Cookie的页面进行XSS攻击。

localStorage 的特性和Cookie类似,但它和Cookie不同的是,Cookie被设置过之后,具有有效期这个特性,而localStorage被设置过后,只要不手动清除或覆盖,这个值永远不会消失。 Cookie中通常会存放少量的缓存信息,像用户的头像URL,用户名等等,而localStorage中通常会存放一些大量,需要重复加载的数据,如搜索历史记录,缓存JS代码等等。

这些值被修改过以后,大部分开发者都不会去校验它的合法性,是否被修改过。

四、postMessage

五、window.name

window.name 与其他 window 对象不同,它在窗口刷新后会保留。 例如

// 通过iframe设置name的值
<iframe src="example.com" name="Foo"></iframe>

当这个页面刷新跳转到其他网站时,如果这个网站没有对 window.name 进行设置,那么当前window.name的值仍然是Foo

0x03.DOM XSS 防御

输出有可能输出在不同位置上,因此进行分类:

a.在HTML里面输出,类似script,a标签,进行HTMLEncode编码即可。

b.在HTML属性里面输出,<div a=‘’></div>可以构造‘><script>aleert(/xss/)</script> 类似代码进行攻击,

使用HTMLEncode标签即可进行防御

C.在script标签里:在script标签里面可以直接执行JavaScript代码,进行JavaScriptEncode编码即可

D.在事件里面:类似<img src=@ οnerrοr=‘val’>输出事件里面的 val=‘function(){};alert(/xss/)’进行攻击。进行JavaScript编码即可

E.在css样式里面输出:有几种方法可以进行攻击,在style标签里面,@import引入资源、background-url等引入图片资源。HTML标签的style属性,最好应禁止在这几类地方输出,如果必要可以引用owasp esapi的encodeForCSS()函数。

F.在地址中输出:进行URLEncode

参考文档:https://www.secpulse.com/archives/92286.html

https://security.tencent.com/index.php/blog/msg/107

发布了23 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/chjunjun/article/details/102894205
今日推荐