【产品技术】XSS攻击类型简介(攻击篇)
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。(引用自百度百科)
跨站顾名思义就是越过单一站点封锁往访问多个站点。举个栗子,我们原本只访问A网站,现我们的访问被黑客劫持到B网站上去了。
敲黑板,关键词如下:
· 攻击者:黑客
· 受害者:目标网站的目标用户的浏览器
· 攻击方法:脚本
XSS跨站攻击就是在网页里面埋入恶源代码劫持用户的信息投递到预设的网站上去的一种黑客攻击手段。
首先,根据效果的不同,主要划分为以下几类:
l 反射型XSS
l 存储型XSS
l DOM Based XSS
反射型
发出请求时,XSS代码出现在URL中,作为输入提交到服务器,服务器解释后相应,在响应内容中出现这段XSS代码,最后由浏览器解释执行!
栗子:
http://www.foo.com/xss/1.php的代码如下:
<?php
echo $_GET['x'];
?>
输入的x的值未经过任何过滤直接输出,一种触发XSS的一种方式如下:
http://www.foo.com/xss/1.php?x=<script>alert(1)</script>
服务器解析时,echo就会完整的输出<script>alert(1)</script>到响应体中,然后浏览器解析执行触发!!
存储型
存储型XSS和反射型XSS的区别:
提交的XSS代码会存储在服务器上,下次请求目标页面的时候不需要再次提交XSS代码!!
存储的位置可以是数据库、内存、文件系统等。
典型的例子就是留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容就会从数据库查询出来并显示,在浏览器上与正常的HTML和JS解析执行,触发XSS攻击!!
DOM型
DOM型XSS和存储型、反射型XSS的区别:
DOM型XSS代码不需要服务器解释响应的直接参与,触发XSS只需要浏览器的DOM解析,完全是客户端的问题!!
栗子:
http://www.foo.com/xss.html的代码如下:
<script>
eval(location.hash.substr(1));
</script>
触发XSS的一种方式如下:
http://www.foo.com/xss.html#alert(1)
这个URL显然不会发送到服务端,仅仅是在客户端被接收并解析执行!!
常见的输入点:
document.URL
document.URLUnencoded
document.location
document.referrer
window.location
window.name
document.cookie
表单的值
常见的输出点:
1.常见输出HTMl内容
document.write(...)
document.body.innerHtml= ...
2.直接修改DOM树
document.create(...)
document.forms[0].action=...
document.body. ...
window.attachEvent(...)
3.替换document URL
document.location= ...
document.location.hostname= ...
document.location.replace(...)
document.URL= ...
window.navigate(...)
4.打开或修改新窗口
document.open(...)
window.open(...)
window.location.href= ...
5.直接执行脚本
eval(...)
window.execScript(...)
window.setInterval(...)
window.setTimeout(...)
- 点赞
- 收藏
- 关注作者
评论(0)