分析mail.163.com 整个流程页面中输出cookie的地方
发现首页历史记录为输出cookie nts_mail_user的值
构造测试
根据其生成格式,修改cookie nts_mail_user的值为<img>:-1:1
可看到页面会输出其内容
分析此处为innerHTML的xss,可采用<img>标签来执行js脚本
构造测试
修改cookie nts_mail_user的值为<img src=1 onerror=alert(1)>:-1:1
成功触发
继续修改让其执行远端的js文件
成功载入执行了我们远端自定义的js
此处已类似 http://wooyun.org/bugs/wooyun-2010-0127985 提到的问题
如何构造设置cookie呢,根据文中所说,我们可以使用xss来设置
这里神器伏宸自动化渗透测试平台已扫描出多个163.com域名下的反射型xss漏洞,提取一个测试一下。
构造
js.js内容
成功利用xss设置攻击cookie并触发
现在如何截取用户名密码呢
在wooyun zone搜索了下 有很多办法以及长短短的xss.js。
这里为了方便,采用的是给表单增加onsubmit的方式
拦截登录js代码
http://txt888.sinaapp.com/form_save.php为保存截取账户信息页面
form_save.php 代码
测试
访问
再访问mail.163.com登录
输入用户名密码登录
成功截取到明文用户名密码。
到这里就结束了吗,no!
这种攻击方式需要受害者访问我们的链接,成功率低,而且太明显。
怎么让受害者无需点击我们的链接,不知不觉中被窃取呢
这里就要用到一种比较少被提到的漏洞 —— CRLF
详情可看phith0n牛的文章介绍 http://drops.wooyun.org/papers/2466
这里神器伏宸自动化渗透测试平台也已找出多个CRLF漏洞,拿一个测试
访问
可以看到set了我们一个自定义的cookie值,并且域为根域名,可直接提供给mail.163.com使用
构造
这里nts_mail_user 的nts被转换为大写了,不知为何,如何绕过呢。
增加空格%20试试
访问查看 这里成功添加了_nts_mail_user 不再出现大写,但多了个下划线,怎么办呢,经过测试,下划线并不影响其程序获取(不知为何,难道是BUG或者是其程序获取cookie的姿势有问题)。
再访问mail.163.com试试
确定_nts_mail_user可被使用
构造:
访问测试
成功添加cookie
也就是说只要能插入访问外部网络资源的地方就可以插入攻击代码(图片,视频,flash等等),在受害者上网过程中不知不觉中就被窃取账号密码。
测试
例如DZ的论坛
添加网络图片 地址填
测试访问,成功添加cookie
这里园长MM客串一下,作为一个普通用户正常查看帖子
后其登录163邮箱
整理:攻击流程,在社交论坛,贴吧,空间等可添加外部资源的地方插入攻击代码(图片),受害者在正常使用论坛查看帖子或其他无意中触发攻击代码,触发后其下次登录163邮箱时用户名密码将会被截取发动至攻击者指定的地址中。