ytt

V1

2022/01/24阅读:107主题:橙心

Dom Invader| Xss 漏洞挖掘利器

DOM Invader

Dom XSS 在不借助awvs这类强大的扫描器难寻踪迹,Dom Invader可以帮助测试人员很容易的基于前端调试在堆栈中发现蛛丝马迹。Dom Invader会自动识别页面所有可控的Source(源)和Sink(汇)并将Canary(金丝雀)注入后按照危害程度进行高到低排序,当然也并不是百分百存在漏洞,例如: 以下图片(挖到当我没说🤪),当然师傅们真挖到 了别忘了我😗 image

如何启用 DOM Invader

Burp 2021.7版本开始自带浏览器中集成了该插件

image
image

开启插件后f12查看是否可以使用 image

image
image

用例1 基础使用

以下地址为portswigger官方靶场

http://portswigger-labs.net/dom-invader/

选择以下靶场作为第一个训练

https://portswigger-labs.net/dom-invader/testcases/augmented-dom-eval/index.php

首先单击Test 发现为get请求,url多个了x参数。

image
image

那么我们选择将Canary 注入到URL

image
image

发现Sinks中有个标红的eval(),单击右边蓝色的Stack Trace进行跟踪,具体位置它会显示在console窗口。

image
image
image
image

跟进来到发现是eval(x)出了错

image
image

x内容即为url中的x内容;那么构造x=alert(1) 即可

image
image

用例2 事件监听与重定向

https://portswigger-labs.net/dom-invader/testcases/augmented-dom-click-location-replace/index.php

该用例将展示 Dom Invader 设置中 Auto fire eventsRedirection prevention 的使用

image
image

首先开启这两个功能,自动点击事件与禁止重定向功能;至于为什么:click 事件触发时会执行location.replace(x) 当前页面会进行文档替换(刷新),并且禁止回退。所以js中的堆栈数据刷新了自然就没有数据了。

image
image

同样是选择url注入 payload: javascript:alert(1)

image
image

用例3 消息拦截器

该用例需要开启 Postmessage interception 功能,以下三个子功能可开可不开,都是自动化进行恶意payload测试,下面我将会放出开与不开的提示对比。

image
image
image
image
image
image

危害效果立马明显起来了,查看堆栈为eval(x),直接修改payload 选择发送

image
image

Build Poc 是真的不错,能将payload改成恶意代码后会生成一个iframe加载,点击就会跳转弹窗。


        <!doctype html>
        <html>
            <head>
                <!-- DOM XSS PoC - generated by DOM Invader part of Burp Suite -->
                <meta charset="UTF-8" />
                <title>Postmessage PoC</title>
                <script>
                    function pocLink() {
                        let win = window.open('https://subdomain1.portswigger-labs.net/dom-invader/testcases/postmessage-eval-iframe-multiple/external.html');
                        let msg = "javascript:alert(1)";
                        
                        setTimeout(function(){
                            win.postMessage(msg, '*');
                        }, 5000);
                    }
                    function pocFrame(win) {           
                        let msg = "javascript:alert(1)";
                        
                        win.postMessage(msg, '*');          
                    }
                </script>
            </head>
            <body>
                <a href="#" onclick="pocLink();">PoC link</a>          
                <iframe src="https://subdomain1.portswigger-labs.net/dom-invader/testcases/postmessage-eval-iframe-multiple/external.html" onload="pocFrame(this.contentWindow)"></iframe>                    
            </body>
        </html>


分类:

前端

标签:

JavaScript

作者介绍

ytt
V1