XSS漏洞
cross-site scripting
跨站脚本攻击
一、XSS原理
1、攻击者会在web页面中插入一些恶意的脚本代码(通常是HTML代码和JS脚本)。当用户浏览该页面的时候,那么嵌套在该页面的代码就会执行,因此会达到攻击用户的目的
基本的xss漏洞代码
<script>alert('xss')</script>
<img src='./smile.jpg' onmouseover='alert(/xss/)’>
<input type="text" onclick="alert(/xss/)">
2、用户浏览被XSS注入过的网页,浏览器就会解析这段代码,就被攻击了。因为浏览器当中有JavaScript解析器,浏览器不会判断代码是否恶意,只要符合语法规则,就直接解析了
3、攻击对象: 对象大多为用户,网站管理员。
攻击点一般是网站url还有微博,网页留言板,聊天室等收集用户输入的地方。
二、XSS类型
反射型(ctrl+4)
反射型也称为非持久型,这种类型的脚本是最常见的,也是使用最为广泛的一种,主要用于将恶意的脚本附加到URL地址的参数中。
数据流量:浏览器---->后端---->浏览器
流程:客户端(浏览器)注入恶意的XSS漏洞代码,并发送请求到服务端,后端解析并返回带有XSS漏洞攻击的页面到浏览器上
存储型
持久性,代码是存储在web服务器中的,比如在个人信息或发表文章等地方插入代码,如果没有过滤或者过滤不严,那么这些代码将存储在服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫、盗窃cookie。每一个访问特定页面的用户,都会受到攻击。
数据流量走向:浏览器—>后端—>数据库—>后端—>浏览器
流程:客户端(浏览器)通过发送博客或者留言评论输入恶意的XSS漏洞代码,浏览器将请求发送请求到服务端,服务端将这段代码保存到数据库中,当用户访问这个页面时,数据库中保存的代码会被后端进行解析,并且发送到客户端的浏览器上,实现攻击
DOM型
DOM是一个树状的模型,js可以对树中的文档对象进行修改,而改变页面的元素,dom型xss就是通过函数获取到输入的值,然后拼接到代码中,如果包含恶意代码,则当js代码执行去改变页面元素的时候会导致恶意代码被执行,从而发生xss。
和反射型xss及存储型xss不同的是,DOM型xss不经过服务端,只在前端执行
(前面说过放射型xss需要把数据发送到后端解析,在回到浏览器显示出来)
数据流量:URL—>浏览器
三、靶场
dvwa靶场
pikachu靶场