XSS
Cross Site Scripting 跨站脚本攻击
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
通过URL 输入框提交,留言等方式,向dom中注入某些引导用户操作的Ui,比如点击弹窗,图片等,引导用户进行点击执行带有获取信息代码
核心:恶意脚本注入
危害
1、劫持访问
劫持访问就是在恶意脚本中插入诸如的代码,那么页面就会跳转到其它页面。
比如,某个网站通过表单接收用户的留言,如果服务器接收数据后未经处理就存储到数据库中,那么用户可以在留言中出入任意javaScript代码。比如攻击者在留言中加入一行重定向代码:
)
利用过滤后返回语句再次构成攻击语句来绕过
http://192.168.1.102/xss/example3.php?name=
用其它标签来插入代码
http://192.168.1.102/xss/example4.php?name=<img src=’w.123’ onerror=’alert(“hey!”)’>
编码脚本代码绕过关键字过滤
有的时候,服务器往往会对代码中的关键字(如alert)进行过滤,这个时候我们可以尝试将关键字进行编码后再插入,不过直接显示编码是不能被浏览器执行的,我们可以用另一个语句eval()来实现。eval()会将编码过的语句解码后再执行。
例如alert(1)编码过后就是
\u0061\u006c\u0065\u0072\u0074(1)
所以构建出来的攻击语句如下:
http://192.168.1.102/xss/example5.php?name=
主动闭合标签实现注入代码
手动闭合掉两个双引号来实现攻击,别忘了,javascript是一个弱类型的编程语言,变量的类型往往并没有明确定义。
http://192.168.1.102/xss/example6.php?name=“;alert(“I am coming again~”);”
效果如图。
整理至 https://zhuanlan.zhihu.com/p/26177815
在标签的 href、src 等属性中,包含 javascript: 等可执行代码。
在 onload、onerror、onclick 等事件中,注入不受控制代码。
在 style 属性和标签中,包含类似 background-image:url(“javascript:…”); 的代码(新版本浏览器已经可以防范)。
在 style 属性和标签中,包含类似 expression(…) 的 CSS 表达式代码(新版本浏览器已经可以防范)。
防范手段
过滤
对诸如