10.2.3 密码找回逻辑漏洞
为了防止用户遗忘密码,大多数网站都提供了找回密码功能。常见的找回密码方式有:邮箱找回密码、根据密码保护问题找回密码、根据手机号码找回密码等。虽然这些方式都可以找回密码,但实现方式各不相同。无论是哪种密码找回方式,在找回密码时,除了自己的用户密码,如果还能找回其他用户的密码,就存在密码找回漏洞。
密码找回漏洞在逻辑漏洞中占了较大的比例。测试密码找回漏洞与其他逻辑漏洞的方法相同,其中必经的两个步骤是:熟悉业务流程(密码找回过程)与对流程中的HTTP请求分析。下面将介绍一个简单的密码找回漏洞。
http://www.xxser.com提供了密码找回的功能,根据网页提示,可以发现业务流程为:输入注册邮箱地址→提交→收取邮件→更改密码,如图10-13所示。
图10-13 找回密码流程
按照图中的提示输入邮箱地址,单击"继续"按钮后,跳转到发送成功页面,如图 10-14所示。同时邮箱也接收到了网站发来的重置密码链接。
图10-14 邮件发送成功页面
看起来这些步骤并没有漏洞,但有些"东西"隐藏在背后,只有抓包才能看到。在收取邮件重置链接步骤看到有一个重新发送的超链接,对此使用Burp Suite进行抓包,如图10-15所示。
图10-15 重新发送的HTTP请求
此时可以猜想,网站是否根据此邮箱发送的重置密码链接。尝试修改参数为另一个邮箱(xxser@xxser.com),然后发送,发现果然发来了密码重置邮件,如图10-16所示。
图10-16 密码重置邮件
这样一个任意修改密码漏洞就出现了,如果知道其他用户的邮箱,就可以更改他的密码。这个案例中最大的错误就是"重新发送"功能使用了客户端的邮箱,而程序开发人员根本没有想到,"用户"会修改隐藏在HTML中的邮箱。
10.2.4 支付逻辑漏洞
不同的功能分别对应不同的逻辑漏洞,例如,密码找回功能就对应任意修改密码的问题,查询功能可能存在越权的问题,但查询功能最多是让你看到了不该看到的资源,却不会造成一些其他的漏洞,如删除某些资源,也就是说,只与查询有关的漏洞。而支付逻辑漏洞与钱有关,那么对应的则是"刷钱"、"免费购买"等漏洞。
同样,测试支付逻辑漏洞的重点是对HTTP请求及业务流程的分析。在前面简单介绍了支付的业务流程,接下来将详细介绍支付逻辑漏洞。
在测试支付逻辑漏洞时,也有几个侧重点,就是由用户提交的参数,如:购买数量、商品价格、折扣、运费、商品信息的中转页面、跳转到支付接口时等参数。接下来介绍几种常见的逻辑支付漏洞场景。
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。