短信验证码接口非常容易遭受互联网恶意攻击——“短信轰炸”,该攻击通过循环利用不同业务中的无需注册即可向任意手机号发送短信验证码的正常业务需求(如用户注册、密码修改等),向多个手机号码同时连续发送大量的验证短信,对用户造成困扰。下面对短信轰炸的原理进行具体分析,进而制定相应的安全防护方案。

短信轰炸原理

短信轰炸一般基于 WEB 方式,其由两个模块组成,包括:一个前端 Web 网页,提供输入被攻击者手机号码的输入窗口;一个后台攻击页面(如 PHP),利用从各个网站上找到的短信验证码 URL 和前端输入的被攻击者手机号码,发送 HTTP 请求,每次请求给用户发送一条短信验证码。利用这两个模块实施“短信轰炸”攻击,原理具体分析如下:

  1. 恶意攻击者在前端页面(下图所示 )中输入被攻击者的手机号;
  2. 短信轰炸后台服务器,将该手机号与互联网收集的可不需要经过认证即可发送短信的 URL 进行组合,形成可发送验证码短信的 URL 请求;
  3. 通过后台请求页面,伪造用户的请求发给不同的业务服务器;
  4. 业务服务器收到该请求后,发送短信验证码到被攻击用户的手机上。

这个过程如下图 所示。 

短信轰原理

短信轰炸实例分析

用户在某短信轰炸软件上输入被攻击手机号、攻击的次数后,对被攻击的手机号进行攻击的源码如下图所示。

短信轰炸平台源码

该攻击页面中主要采用 img src="’http://…..’" / 来调用业务服务器短信发送的接口。如上图红框中内容所示:

  • 在“短信轰炸”源代码中,利用img标签的 src 属性定义了可以请求发送验证码短信的 URL(如 gd.12530.com/….);
  • 在其中的 phonenumber 字段中嵌入被攻击的手机号(如 13811111111)后,即可形成攻击 URL;
  • 页面运行后,将其以 HTTP GET/POST 的方法提交给业务服务器;
  • 业务服务器发送短信验证码到被攻击者的手机上,从而完成了短信轰炸。

了解了短信轰炸的原理后,下一篇将为大家提供相应的安全防护方案。

原文阅读:《短信验证码安全防护方案(一)短信轰炸原理》___漫道短信平台