目录
一、什么是跨站攻击
即Cross Site Script Execution(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。xss是web安全最常见的攻击方法之一,与sql注入、文件上传等都是web安全不可忽略的知识点。
二、XSS分类
2.1 反射型XSS
反射型XSS,又称非持久型XSS。之所以称为反射型XSS,则是因为这种攻击方式的注入代码是从目标服务器通过错误信息、搜索结果等方式“反射”回来 的。而称为非持久型XSS,则是因为这种攻击方式具有一次性。攻击者通过电子邮件等方式将包含注入脚本的恶意链接发送给受害者,当受害者点击该链接时,注入脚本被传输到目标服务器上,然后服务器将注入脚本“反射”到受害者的浏览器上,从而在该浏览器上执行了这段脚本。
2.2 存储型XSS
存储型XSS,又称持久型XSS。它和反射型XSS最大的不同就是,攻击脚本将被永久地存放在目标服务器的数据库和文件中。这种攻击多见于论坛,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入到帖子的内容之中。随着帖子被论坛服务器存储下来,恶意脚本也永久地被存放在论坛服务器的后端存储器中。当其它用户浏览这个被注入了恶意脚本的帖子的时候,恶意脚本则会在他们的浏览器中得到执行,从而受到了攻击。
2.3 DOM XSS
DOM XSS和反射型XSS、存储型XSS的差别在于DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。
三、XSS常见危害
- 盗取用户Cookie
- 修改网页内容
- 网站挂马
- 利用网站重定向
- XSS蠕虫
四、练习题
4.1 初级反射型xss
给了一个网址,查看页面源代码,一个基础的form表单,通过填写文本框,点击确定
按钮,通过post方式进行提交到后台。
然后,在文本框中构造一段字符,点击确认按钮,页面进行提交跳转并返回本页面,显示文本框里面提交的内容,再对跳转后页面的源代码进行分析。
尝试语句:<script>alert(/XSS/)</script>,将其插入文本框,点击提交,页面会出现一个弹框,即得到flag。
4.2 中级反射型xss
进入目标网站,不断地猜解,构造如下语句:
- uuuuuuuuuu
- <script>alert(/xss/)</script>
所得页面均未发生改变,是因为表单的内容被提交到后台的php文件中,经过php文件的过滤处理,然后返回到页面中。
继续猜解,构造语句:<SCRIPT>alert(/xss/)</SCRIPT>。
获得了flag,说明表单提交的内容,经过php文件的过滤处理,返回到页面的数据经过浏览器的解析,把标签执行出来。
4.3 总结归纳
- 首先我们先对源代码进行分析。
- 我们使用构造语句来进行尝试,分析源代码,得出不同点。
- 通过对上一步的总结,我们再进行构造语句进行尝试,尝试成功,获得flag 。
因此我们得出结论,需要成功的执行代码,需要两个条件:
- 必须要进行表单提交。
- 构造一段javascript弹框代码,例如:<script>alert('aaaa');</script>。