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注入。