ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-04-03 00:35:15  阅读:151  来源: 互联网

标签:语句 XSS DOM url javascript 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,url,javascript,xss,输入
来源: https://www.cnblogs.com/HQWQF/p/16094920.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有