一、 反射型Xss
二、 保存型Xss
三、基于DOM的Xss漏洞
四、实验
五、防御方式
一、反射型Xss
如果一个应用程序使用动态页面向用户显示错误信息,就会造成一种常见的Xss漏洞,一般情况下页面该页面回又一个包含消息文本的参数,并在响应中将这个文本返回给用户。
1、攻击流程
(1)用户登录
(2)攻击者将自己的URL提交给客户
(3)用户请求攻击者的URL
(4)服务器对攻击者的脚本进行响应
(5)攻击者的脚本在浏览器执行
(6)用户的浏览器向攻击者发送回话令牌请求
(7)攻击者成功劫持用户会话
二、 保存型Xss
如果一名用户提交的数据被保存在应用程序中,然后不经适当过滤或净化就显示给其他用户,就会出现这种情况。
1、攻击流程
(1)攻击者提交包含恶意脚本的数据
(2)用户登录
(3)用户浏览的页面获取来攻击者的恶意数据
(4)服务器对恶意数据中的脚本做出回应
(5)攻击者的脚本在用户的浏览器中执行
(6)浏览器将会话令牌发送给攻击者
(7)攻击者劫持回话
2、保存型Xss和反射型Xss的区别
反射型xss需要用户访问攻击者设计的URL,但是保存型没有这种需求。所以保存型Xss更危险。
三、基于DOM的Xss漏洞
由于客户端js可以访问浏览器的文本对象模型,因此脚本可以决定用户加载当前页面的URL。利用该漏洞时服务器的响应不用任何形式包含攻击者的脚本,当用户的浏览器处理这个响应时,上述脚本得以处理。
1、攻击流程
(1)用户登录
(2)攻击者将准备好的URL给用户
(3)用户请求攻击者的URL
(4)服务器以含有硬编码的脚本页面给用户
(5)攻击者的URL又JS处理,引发攻击的有效载荷
(6)用户浏览器将攻击者发送会话令牌
(7)攻击者劫持用户的会话
2、Dom Based Xss和反射型Xss的区别
主要区别在于dom构造的url参数不会发送到后端
四、实验
1、简单的反射型注入
这里可以看到这个网站把输入的部分没有经过净化或过滤操作,直接把输入的部分放在了页面上,存在反射型XSS注入漏洞。于是我们可以利用这个漏洞来加载自己写的script脚本。
五、防御方式
1、HttpOnly
HttpOnly解决的是Xss后的Cookie劫持攻击。如果Cookie设置来HttpOnly,则会导致这种攻击失败,因为js读取不到Cookie的值。
2、输入检查
制定白名单,输入检查特殊字符。
3、输出检查
对特殊字符进行检查和转译