0x00 前言

XSS跨站脚本攻击,通过往HTML页面中插入恶意HTML代码或JS语句,来执行攻击。XSS攻击在前端触发,具有容错性高的特点。XSS可以分为

1、反射型

2、存储型

3、DOM型

不同类型的XSS触发条件不同,但是普遍具有盗取Cookie、获取内网IP、获取浏览器中保存到密码、屏幕截图等危害。

0x01 原理

如一段正常的html代码:

xss1.png

功能是获取用户提交的信息并将其显示出来:

xss2.png

xss3.png

通过查看源码可以发现HTML代码:

xss4.png

若构造特定语句,可以造成XSS攻击:

a<img src="a" onerror="alert(1)">

xss5.png

因为我们的输入被当做HTML代码执行了

xss6.png

触发XSS常用方法

1.<script>脚本

<script>alert(x)</script>

2.伪协议

<a href=javascript:alert(x)>

3.事件触发

<img src='a' onerror=alert(1)>

' onfocus=alert(1) autofocus//

oninput=alert(a)等

0x02 反射型

反射型XSS仅对本次访问有效,需要用户主动触发,因此危害相对较小。

常发生在搜索框、查询框等处。

通常反射型xss的攻击语句包含在URL中,可以生成短链接等方法,诱导用户点击短链接,触发XSS攻击。

0x03 存储型

存储型XSS的攻击具有持久化、自动触发等特点,危害较大。

如在用户信息插入XSS语句,并且服务器将用户信息存储到数据库中,当管理员或其他用户查看了这个用户信息后,XSS语句就会在前端加载并且自动触发,形成XSS攻击。

常发生在留言板、评论区、个人信息、订单信息、收货地址、站内信、意见反馈、网站目录名、图片属性、私信、网页即时通讯等地方。

具有隐秘性、高危害性。

0x04 DOM型

DOM型XSS比较特殊,是指本不能触发XSS攻击,但是经过DOM处理过后,会造成XSS的情况。DOM型XSS既可以是反射型,也可以是存储型。

如本来对用户提交的信息进行了处理,将 script 关键字过滤掉,而如果DOM对象有拼接功能,可以将 script 拆分成两部分输入,再利用DOM进行拼接,绕过了过滤,形成XSS攻击。