[ 常见漏洞篇 ]常见web漏洞总结------XSS跨站脚本漏洞
本文简单的总结了一下XSS的知识点
主要是从面试的角度来总结的
如果想从事安全方向,那么这些基本的漏洞都是需要掌握的
目录
一、XSS形成原因:
二、XSS分类:
反射型XSS
存储型XSS
DOM型XSS
被攻击对象的不同
解析位置不同
存储时间不同
三、XXS防御:
输入过滤
输出转义
四、xxs漏洞的利用
测试流程
利用方式:
五、xxs的攻击流程
存储型:
反射型:
五、XSS实现钓鱼攻击的攻击流程:
六、跨站脚本漏洞盗取cookie攻击流程:
七、Xss绕过方式:绕过方式总结
七、什么是xss盲打
八、什么是跨域
九、同源策略
十、相关文章分享
一、XSS形成原因:
简单来说就是程序对输入输出没有做合适的处理,导致攻击者构造的字符输出到前端时被浏览器执行当作有效代码解析执行从而产生危害
二、XSS分类:
1. 反射型XSS
不会存在数据库里面,一般出现在查询页面
反射型XSS,又称非持久型XSS,攻击相对于受害者而言是一次性的
具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本
2. 存储型XSS
存在数据库里面,一般出现在注册页、留言板等
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库
当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。
存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来
3. DOM型XSS
不与后台服务器交互数据 也属于反射型的一种 一种通过dom操作前端输出的时候产生问题
DOM,全称Document Object Model,是一个平台和语言都中立的接口
可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式
DOM-XSS简单理解就是不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题。
4. XSS三种类型的区别
1. 被攻击对象的不同
反射型XSS的被攻击对象一般是攻击者去寻找的
存储型XSS是广撒网的方式或者指定的方式,危害性更大,范围更广
DOM型XSS的被攻击对象其实和反射型XSS被攻击对象差不多,就是给攻击对象放送URL。
2. 解析位置不同
个人感觉是反射型与存储型区别的本质
反射型XSS的脚本被解析的地方是浏览器
存储型XSS的脚本被解析的地方是服务器
DOM型XSS也是浏览器,但是反射型XSS需要联网,而DOM型不需要
3. 存储时间不同
反射型XSS是一次性
存储型XSS是存储在服务器上,只要服务器不挂机或者是被干掉,就一直会有
4. 允许输入点的不同
这是DOM型与其他两种的区别
反射型XSS在搜索框啊,或者是页面跳转啊这些地方
存储型XSS一般是留言,或者用户存储的地方
DOM是在DOM位置上,不取决于输入环境上
三、XXS防御:
1. 输入过滤
不允许可能导致xss攻击的字符输入
2. 输出转义
根据输出点的位置对输出到前端的内容进行适当转义
Xss是一种发生在前端的漏洞 所以危害的对象也主要是前端用户
Xss可以用来进行钓鱼攻击 前端js挖矿 用户cookie获取 甚至可以结合浏览器滋生的漏洞对用户主机进行远程控制等
四、xxs漏洞的利用
1. 测试流程
找到输入点(查询接口、留言板等)
输入一组 特殊字符+唯一标识符 查看返回的源码 是否做出了相应的处理
通过搜索定位到唯一字符 (构造闭合)
构造脚本代码 (绕过) 查看是否执行成功 如果成功 存在xss漏洞
2. 利用方式:
- Get方式是比较容易地,参数放在url里面
:直接把url发送给目标就可以了
- Post方式提交参数是以表单的方式放在请求体里面
:没法直接通过url发送给目标
五、xxs的攻击流程
1. 存储型:
①黑客在目标服务器上构造XSS恶意脚本,保存在数据库中
②用户在网站登录状态下,访间了目标服务器,查看了存在恶意脚本的页面
③网站将XSS同正常页面返回到用户浏览器
④用户浏览器解析了网页中的XSS恶意代码,向恶意服务器发起请求
⑤黑客从自己搭建的恶意服务器中获取用户提交的信息
2. 反射型:" class="reference-link">
2. 反射型:
①发送带有XSS恶意脚本的链接
②用户点击了恶意链接,访问了目标服务器
③网站将XSS同正常页面返回到用户浏览器
④用户浏览器解析了网页中的XSS恶意代码,向恶意服务器发起请求
⑤黑客从自己搭建的恶意服务器中获取用户提交的信息
五、XSS实现钓鱼攻击的攻击流程:
可用basic认证实现钓鱼场景
在实际的攻击场景当中,xss钓鱼的场景非常多
可以内嵌一些钓鱼页面,或者钓鱼链接,basic认证等实现钓鱼
在存在xss漏洞的页面,内嵌一个请求(javascript或者其他)
当用户打开了嵌入恶意代码的页面之后,页面会向远端的后台(pkxss)去发送一个请求
这个请求会返回一个要求他进行bacis认证的头部 在用户界面上就会弹出一个要进行身份认证的提示框,一旦他输入了账号密码,这个账号密码就会发送到我们的后台
六、跨站脚本漏洞盗取cookie攻击流程:
利用xss盗取cookie也比较常见
获取cookie的攻击流程可以看xss攻击流程图
用户 用浏览器 访问存在xss漏洞的站点
站点 返回给浏览器的 数据带有 恶意js代码
用户 浏览器执行 js代码 要求 发送cookie给 攻击者
攻击者伪造用户登录站点,造成破环
后台就需要有一个接收数据的接口
七、Xss绕过方式:绕过方式总结
1. 前端过滤,burp抓包改包绕过
**2. 双写绕过
- 事件绕过**
4. 大小写绕过
5. 注释干扰绕过
6. 伪协议绕过
7. 空格回车Tab绕过
8. 编码绕过
七、什么是xss盲打
也就是说我们输入的字符并不会在前端输出
只有他的管理员才能看到我们输入的内容 前端用户是看不到的
如果说管理员登陆后台之后 后台界面会把我们输入的内容进行输出的话 就意味着后台的管理人员会被x到
如果真的会被x到 那么这种场景的xss就叫xss的盲打
八、什么是跨域
当协议、主机(主域名,子域名)、端口号中任意一个不同就是不同域
不同域之间请求数据的操作,称为跨域操作
九、同源策略
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。
可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
两个域名之间不能使用js相互操作(更安全)
当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面
当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,
即检查是否同源,只有和百度同源的脚本才会被执行
如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。
同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收
十、相关文章分享
pikachu靶场通关之XSS(一)
常见web漏洞总结———SQL注入
常见web漏洞总结———CSRF
常见web漏洞———XXE.
pikachu靶场通关之暴力破解
业务逻辑漏洞
2021年 owasp top 10
还没有评论,来说两句吧...