一个京东登录的安全漏洞
我的博客:http://blog.striveforfreedom.net
1 简介
最近在看一个开源网站的代码,发现如果登录页面是通过http协议请求的,会重定向到使用https协议的url,这样可以保证登录安全。今天心血来潮,想看看京东有没有这样处理,意外发现京东在这方面存在安全漏洞。
2 检查过程
先运行Wireshark,Filter用http contains jd.com。京东登录页面地址是https://passport.jd.com/new/login.aspx, 把https改成http,在浏览器地址栏里输入http://passport.jd.com/new/login.aspx, 回车,然后查看Wireshark的抓包,并没有发现重定向响应。然后在登录页面的用户名和密码输入框处分别填上faked_user和faked_password,点击登录。再查看Wireshark,发现一个post请求,传输的数据是uuid=4b72722f-58a1-4c4c-9364-db663ca9e8a4&loginname=faked_user&nloginpwd=faked_password&loginpwd=faked_password&machineNet=&machineCpu=&machineDisk=&authcode=&ZWprDUvAGW=sNKhf,里面赫然可以发现loginname=faked_user&nloginpwd=faked_password&loginpwd=faked_password,这说明在这种情况下京东是以明文传输密码的。这就存在一个安全漏洞,如果攻击者把使用http协议的登录地址发布在网络上,诱使受害者点击,攻击者就有机会截取受害者的用户名和密码了。
发现京东存在这样的问题之后,好奇心驱使我又试了其他几家电商的登录页面。我首先试了亚马逊的登录页面,发现亚马逊没有这种问题,如果用户是使用http协议访问登录页面,亚马逊会返回一个HTTP/1.1 302 Moved Temporarily响应,Location响应头字段里会包含使用https协议的url,浏览器则会被重定向到访问安全的登录地址。淘宝/苏宁/易迅也一样,都重定向到了https地址,新蛋直接禁止了以http方式访问登录页面(客户端TCP SYN包发出之后,收到了服务器的RST包,应该是登录服务器上的80端口没有打开),1号店使用iframe来嵌入登录页面,在iframe的src属性里找到登录页面的url,把https改成http然后访问,没有重定向,但在提交登录的javascript函数里明确使用了https来发送登录请求,这种攻击方式也用不上。
3 小结
这种问题很容易修复,只要在登录页面里检查协议,如果发现访问登录页面使用的是http协议,则重定向到使用https协议的地址。相对来说,京东这个还是小问题,购书网站互动出版网 竟然是直接用明文传输用户名和密码的,实在让人无语。
posted on 2013-11-19 11:27 striveforfreedom 阅读(5201) 评论(14) 编辑 收藏 举报