XSS 又叫CSS (Cross Site Scripting) 跨站脚本攻击为了和网页开发中的css区分开来,一般叫作XSS。XSS主要是前端的漏洞。 在存在XSS漏洞的网页中 几乎可以实现JavaScript能实现的一切。例如 盗取用户cookie,黑掉网页,跳转到某网站,蠕虫,黑客只需要在页面中写入js代码即可。
xss就是攻击者在网页中写入恶意的脚本代码,以此达到攻击目的 一般为JavaScript 有少数是ActionScript VBScript 所以说要想学懂XSS漏洞,必须学会XSS。
原理:
攻击者在存在xss漏洞的页面中注入脚本代码,通过js脚本来执行自己想进行的操作。危害有多大取决于攻击者对脚本代码的掌握程度。
分类:
存储型 (持续型)
储存型XSS相比反射型来说危害较大,在这种漏洞中,攻击者能够把攻击载荷存入服务器的数据库中,造成持久化的攻击。一般存储在网页中的评论区啊,博客啊,日志啊一类的。只要有人访问这个页面就会被攻击。
我们来看以下例子 用pikachu靶场
如图是一个留言板,我们的输入都会被网站保存起来。
我们输入
<script>alert('sb')</script>
然后我们的输入内容被保存了起来,接着我们再访问这个页面 就会一直出现这个弹窗!!
只要访问这个页面的人都会看到这个弹窗,由此可以知道存储型xss的威力!!
反射型 (非持续型)
反射型XSS通常出现在搜索等功能中,需要被攻击者点击对应的链接才能触发,且受到XSS Auditor、NoScript等防御手段的影响较大。
以pikachu靶场为例:
这是get类型的xss
显然要实现xss 就要构造一段代码这里我们输入:
<script>alert("hhhh")</script>
但是当我们输入的时候发现有长度限制输入不了,怎么办? 有2种办法
1、在url中输入因为这儿没有长度限制
2、在网页html代码里修改 F12 在源代码里搜索maxlength关键字 然后将值修改得足够长 这里我改成了100
修改完后就可以完整的输入脚本代码了。
如图 成功了!
接下来看看下一关 post类型的反射型xss
这里叫我们登陆 我们什么都不知道 乱输入一个 power 123456
用户名或者密码错误,没办法 看一下提示
按提示输入
然后我们就得到了一个和上一关一样的页面 而且好像没长度限制!!
我们输入这段代码
<script>alert(document.cookie)</script>
看不懂的同学学一下js 这段代码的作用就是拿到管理员的cookie,拿到cookie可以干很多坏事。
DOM型
DOM型XSS不同之处在于DOM型XSS一般和服务器的解析响应没有直接关系,而是在JavaScript脚本动态执行的过程中产生的。
还是用pikachu靶场看看
我们输入
<script>alert('什么东西')</script>
可以看到什么都没有发生 下面还有个链接 what do you see?
查看网页源代码:
这里用DOM将字符串进行了拼接并把值给a标签的href。之前我们输入的
<script>alert('什么东西')</script>
构造出了
<a href='<script>alert('什么东西')</script>'>what do you see?</a>
我们试试它所说的,输入以下代码
#' onclick="alert('hhhh')">
构造成
<a href='#' onclick="alert('hhhh')">'>what do you see?</a>
然后点击 what do you see
可以看到:
看看下一关DOM型xss-x
我输入:没得 发现 没得 跑到url去了
查看网页源代码
发现和上一题差不多 输入
#' onclick="alert('没啥区别啊')">
并点击 : '>就让往事都随风吧 可以看到成功了。
同源策略:
同源策略限制了不同源之间如何进行资源交互,是用于隔离潜在恶意文件的重要安全机制。 是否同源由URL决定,URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。