Java教程

[xss漏洞]反射型,存储型,DOM型XSS

本文主要是介绍[xss漏洞]反射型,存储型,DOM型XSS,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

反射型

XSS的本质是没有对用户输入进行过滤,让我们可以通过输入javascript语句的方法更改网页

get类型

判断:

如果对于任意输入内容,网页都原封不动地把输入内容返回,这里就可以考虑有反射型XSS(尤其关注特殊符号<>?#&666等)

过程:

为了在输入框中输入javascript语句,通常我们需要对输入框最大输入限制进行调整,打开浏览器的开发者页面,使用选择器选择输入框,将限制调大

//将javascript语句输入到输入框,比如
<script>alert('sb')</script>

提交后,就可以弹窗显示了

唯一的限制是你的想象力

get类型的话,url上就会有插入的javascript语句,这时如果利用用户对原网站的信任,使其点击此时的url,实际上就会运行插入的javascript语句

 

POST类型

判断:

post类型是以表单的形式在请求体中提交的

存储型

判断:

同其他

过程

同其他

由于存储型的XSS漏洞所插入的语句上添加到数据库中的,所有进入这以页面的人都会中招,危害较大

DOM型

什么是DOM

DOM通俗来说就是javascript访问,改变HTML的一种办法

靶场里的xssDOM的代码是:

                <script>
                    function domxss(){
                        var str = document.getElementById("text").value;
                        document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }
                    //试试:'><img src="#" onm ouseover="alert('xss')">
                    //试试:' onclick="alert('xss')">,闭合掉就行
                </script>
                <!--<a href="" onclick=('xss')>-->
                <input id="text" name="text" type="text"  value="" />
                <input id="button" type="button" value="click me!" onclick="domxss()" />
                <div id="dom"></div>

点击按钮后会将text的内容添加到id为dom的div中

靶场中的dom是纯前端的操作,没有进行对用户输入的过滤

通过输入脚本利用漏洞

首先确定我们需要的利用:

比如弹个窗

原来的语句是:我们将插入的语句是str位置

<a href='"+str+"'>what do you see?</a>
//实际是第一对单引号内
<a href=''>what do you see?</a>

<a href='"+str+"'>what do you see?</a>

构建闭合,我们需要的效果是

<a href='#' onclick="alert(111)">'>what do you see?</a>
//href='#'是无意义的,跳转到当前页面

所以我们要在框框中输入

#' onclick="alert(111)">

点击后就可以弹窗了

这DOM型好像没什么用

  • 不能存储在url中发送给别人
  • 不能存储在后台

DOM型还是有用的

靶场中的DOM型xss-x的代码逻辑是

               <script>
                    function domxss(){
                        var str = window.location.search;
                        var txss = decodeURIComponent(str.split("text=")[1]);
                        var xss = txss.replace(/\+/g,' ');
  //                        alert(xss);

                        document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
                    }
                    //试试:'><img src="#" onm ouseover="alert('xss')">
                    //试试:' onclick="alert('xss')">,闭合掉就行
                </script>
                <!--<a href="" onclick=('xss')>-->
                <form method="get">
                <input id="text" name="text" type="text"  value="" />
                <input id="submit" type="submit" value="请说出你的伤心往事"/>
                </form>
                <div id="dom"></div>

.replace(/+/g,' ');//是正则表达式替换,/ /内是正则的作用范围,\是转义,g表述全部替换,整体的意思是将+号全部替换为空格

可以看到这个逻辑是以get在url中传递的,这样我们就可以使用url传递恶意代码了,操作同上几个笔记

  • 框框里输入插入的代码
  • 提交后就能在url中看到变化了

DOM型xss的启示

前端开发的方式(人)千奇百怪,不能说某种漏洞就一定是无效的

 

这篇关于[xss漏洞]反射型,存储型,DOM型XSS的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!