水洞小姿势 - 短信接口中逗号的妙用

admin 2023年10月14日02:11:03评论38 views字数 1121阅读3分44秒阅读模式

本文首发 Web 安全社区:https://web.sqlsec.com/thread/290 转载请注明出处!

前情提要

废话不多说,请看 VCR:

POST /xxx/SendMobileSMS HTTP/1.1
Host: x.x.x.x
...
{
  "xxx""xxxxxxx",
  "mobile":"17711111111,17722222222"
}

很显然问题出在了 mobile 的字段,后端的接口没有校验手机号的格式(大多数都是前端校验) ,我们可以使用, 来拼接另一个手机号,那么此时会发生什么事情呢?

水洞小姿势 - 短信接口中逗号的妙用

没错,两个手机号都同时收到了验证码,而且验证码的内容一模一样

水洞小姿势 - 短信接口中逗号的妙用

其实这种情况不算是小众的特例,国光我在实际的渗透测试中,遇到不少次这种情况了,尤其是一些金融企业更容易出现这种安全风险。

那么此时肯定有网友好奇了,这样同时收到验证码有啥危害呢?那么且听我一一道来。

水洞小姿势 - 短信接口中逗号的妙用

原理分析

讲漏洞利用前,我们最好要了解一下漏洞的成因,磨刀不误砍柴工!

请教了交流群里的 Java 开发老哥,原来是短信接口供应商的问题,下面以国内的一个短信接口文档为例,可以看到官方就是使用逗号来进行批量发送的:

水洞小姿势 - 短信接口中逗号的妙用

好了,下面开始说一下这个风险可以导致哪些安全问题吧。

批量横向短信轰炸

顾名思义,这种就是批量发送接口,用来做横向短信轰炸很合理,虽然当前我们的数据包使用了其他字段参数来进行校验,一个数据包只能使用一次,不可重复使用:

水洞小姿势 - 短信接口中逗号的妙用

而且每次调用短信接口前,需要人工过一下验证码,才可以正常调用,但是此时利用我们上述的姿势,直接使用逗号拼接多个手机号看看:

水洞小姿势 - 短信接口中逗号的妙用

可以看到 4 个手机号同时接收到了短信:

水洞小姿势 - 短信接口中逗号的妙用

至此,批量横向短信轰炸漏洞利用证明成功。

此漏洞对于企业来说的危害如下:

  • 利用这个短信接口去骚扰其他用户,对企业造成舆情等不好的影响。
  • 消耗短信接口的资源,轻微的话会造成金钱损失,严重的话会导致接口达上限不能使用,严重影响业务

配合逻辑漏洞利用

既然可以通过逗号拼接的手机号可以收到和前面手机号一模一样的验证码,那么就可以伪造前面的手机号来做各种各样的事情了,比如下图这种利用这种漏洞来任意用户注册,黑客使用 13811111111 的手机号即可窃取到 13822222222 的验证码,然后即可伪造成 13822222222 的身份来注册网站用户,达到伪造任意用户注册的危害:

水洞小姿势 - 短信接口中逗号的妙用

同理下面的其他接口也存在这种安全风险:

  • 短信验证码登录的接口
  • 用户根据短信验证码重置密码的接口
  • ......省略(大家自行结合实际漏洞场景)

如果配合业务逻辑漏洞利用证明成功的话,那么这种短信轰炸的中危漏洞即可瞬间变成高危甚至严重漏洞,网友们下次遇到这种场景记得测试看看哦,说不定有惊喜呢。


原文始发于微信公众号(安全小姿势):水洞小姿势 - 短信接口中逗号的妙用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月14日02:11:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   水洞小姿势 - 短信接口中逗号的妙用http://cn-sec.com/archives/2099809.html

发表评论

匿名网友 填写信息