双因子认证(2FA)是指结合密码以及实物(信用卡、SMS手机、令牌或指纹等生物标志)两种条件对用户进行认证的方法。这种方法已经为企业所采用,主要用于增加账户的安全性,更好的保护用户的账户安全。
与其他大多数网络服务商一样,PayPal也为用户提供了双重验证的选项。双重验证的一个特点就是:在用户尝试使用用户名和密码登录账户时,服务器会向用户发送一次性的短信验证码来验证手机。用户需要有手机服务才能接收到服务器发送的验证码。如果没有手机信号,那他们就没有办法接收服务器发送的验证码,换句话说,他们就不能通过标准的双重验证模式登录账户。
然而,英国安全研究专家Henry Hoggard还是发现了一个非常简单的方法来绕过PayPal的双重验证机制。绕过双重验证机制后,黑客可以在一分钟内轻松掌控用户的PayPal账户。
这个方法是Hoggard在一家没有手机服务(就是我们说的没有信号)的酒店内偶然发现的。
Hoggard表示,问题出现在“尝试其他方式”这个链接上。PayPal向帐户所有者提供此选项,以便他们在手机没有信号或设备不在身边的情况下,依然可以使用自己的账户。当出现手机无信号或者设备无法连接的情况时,PayPal便要求用户回答密保问题。
Hoggard发现,如果攻击者运行一个代理服务器,就可以拦截和保存PayPal服务器的请求,这使得攻击者能篡改HTTP数据并欺骗PayPal允许攻击者进入被黑账户。
另外,攻击者需要从HTTP请求中删除“securityQuestion0”和“securityQuestion1”参数。这种攻击对攻击者水平要求并不高,基本上属于入门水平的攻击。
具体步骤:
1.Hoggard登录了他的PayPal账户并点击了“try another way”,他收到了来自PayPal的询问,是否允许PayPal发送一次性2SV验证码给他。
2.Hoggard选择回答密保问题,但他并没有用自己设置的唯一密码,而是在提供的文本框中随便输入了一个密码。
3.在此,Hoggard利用代理,从POST数据中去掉了两个密保问题。
- selectOption=SECURITY_QUESTION&securityQuestion0=test&securityQuestion1=test&jsEnabled=1&execution=e2s1&_sms_ivr_continue_btn_label=Continue&_default_btn_lable=Continue&_eventId_continue=Continue
4.然后,发布数据。令人诧异的是,账户居然通过验证了(小编眼睛被辣了,赔钱)。
这是一个真实的案例,并不是在说笑,虽然简单,但非常有用。如果攻击者掌握了受害者的PayPal用户名和密码,他们就可以绕过2SV并登录受害者的账户。
由于这个漏洞具有很大的威胁,Hoggard在今年10月3日将此问题反馈给PayPal,经过缜密的调查后,PayPal已经在10月21日将该漏洞修复。
一般来说,针对各类web服务都应该采用双重认证,以保证进一步的安全性。除此之外, 他们还应该有备选的认证方案,这样,就算在移动设备丢失的情况下,照常能够访问他们的帐户。