xss(跨站脚本攻击)

xss(跨站脚本攻击)

  原理:攻击者可以通过在页面中注入恶意链接或者脚本代码,当受害者访问时,脚本代码会在其浏览器中执行,这个时候,我们可以获取当前用户的cookie或者进行重定向等操作。

  xss造成的原因是因为对用户插入的数据没有进行过滤,导致用户可以上传一些非法数据,对服务器数据进行盗取。

  xss的形成一定是伴随着输入和输出的。

  xss分为反射型xss、存储型xss、DOM型xss(DOM型xss是一种特殊的反射型xss)

1.反射型xss(输入数据,浏览器直接对数据进行输出)是一种非持久型的xss

  常见的情况有两种:

    <script>输出</script>

    输在在html标签的属性中:<input value="输出">、<img onload="输出">、<body style="输出">,我们可以直接在输出中构造xss payload

2.DOM型xss(我们可以通过源码查看,不仅输出了,而且javascript使用这个输出做了其他事情)

  1.显示输出

  2.隐式输出

  3.不管是显示输出,还是隐式输出,最终结果都会通过innerhtml()和document.write()流向浏览器,但是有时候没有流向页面,而是碰到了eval参数

3.存储型xss(输出的位置不一定在输入的位置,而且一个输入点可能存在很多输出的地方)

4.flash xss(谷歌搜索存在漏洞的flash文件)

直接嵌入 <script>alert(‘xss‘)</script>
元素事件 <body onload=alert(‘xss‘)>
            <input value=alert(‘xss‘)>
            <img style=alert(‘xss‘)>
重定向 <a href =http://192.168.59.143>click</a>
<img src =http"//192.168.59.143/a.jpg onerror=alert(‘xss‘)>
<a href ="onclick=alert(‘xss‘)">type</a>
重定向:<script>windows.location=‘http://www.baidu.com‘</script>

xss的防御

  1.禁止用户输入不可信数据

  2.对用户输入的不可信数据进行编码

xss的绕过:

  1.宽字符绕过

  2.大小写绕过

  3.标签绕过

总结:就是通过输入查看输出,通过输出查看对输入的限制过滤,然后通过过滤条件修改输入进行xss注入。

相关推荐