0x00 前言
XSS跨站脚本攻击,通过往HTML页面中插入恶意HTML代码或JS语句,来执行攻击。XSS攻击在前端触发,具有容错性高的特点。XSS可以分为
1、反射型
2、存储型
3、DOM型
不同类型的XSS触发条件不同,但是普遍具有盗取Cookie、获取内网IP、获取浏览器中保存到密码、屏幕截图等危害。
0x01 原理
如一段正常的html代码:
功能是获取用户提交的信息并将其显示出来:
通过查看源码可以发现HTML代码:
若构造特定语句,可以造成XSS攻击:
a<img src="a" onerror="alert(1)">
因为我们的输入被当做HTML代码执行了
触发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攻击。