记一次利用00进行短信轰炸的渗透手法 WEB

admin 7月前 142

最近在一次渗透测试过程中遇到了一个比较有意思的漏洞,可利用特殊字符构造手机号以绕过发送频率限制,进行短信轰炸。并且在RD同学改完后,仍然发现可被绕过,因此再次记录一番。(文中涉及站点的图片都已打码,只在分享渗透的思路)

空格绕过姿势

在对某站进行渗透测试过程中,发现该网站上有一处发送短信验证码功能,该功能数据包截图如下:

可以看到postdata里面是一个json类型,写入目标手机号,重放数据包,可以成功发送短信验证码。由于服务端对同一个手机号发送次数做了限制,正常情况下无法通过重放数据包进行短信轰炸。然而由于服务端对前端传入的手机号处理不当,可以通过在手机号后面添加空格符号绕过限制。如上图所示,可通过不断在手机号后面添加空格,服务端会认为这是不同的手机号,以此绕过手机唯一性的检测;由于服务端在发送短信验证码时去除了特殊字符并且没有对手机唯一性进行二次检测,因此可达到短信轰炸的效果。

00绕过的姿势

在研发同学修复完此漏洞后,我进行了一次复测,发现服务端在处理手机号时,只是过滤了首位空格符号。那么这样是否就安全了呢?接下来我用回车符等其他特殊符号进行了一轮尝试,发现都无法绕过检测。这时我想到了00大法,可以将空格的16进制20改成00。我先在电话后面输入一个空格,然后在16进制下将20改成00,便可绕过限制,如下图所示:

漏洞产生的原因

服务端在发送手机验证码时分成了两个步骤:第一步服务端在收到手机号码时进行了手机号的唯一性检测(用于判断60s内是否有重复发送),然而此时没有对手机号过滤一些特殊字符,导致添加了空格符号的字符串被当成一个新的手机号;第二步在发送验证码时,却把手机号进行了一些特殊字符过滤,导致最终发送的目标都是同一个手机号。

修复建议

不建议单单使用过滤的方式来修复(很容易被绕过),个人认为可以将判断与发送逻辑合成一个。比如:当服务端收到手机号码时可以进行判断,若传入的手机号码中存在除数字以外的字符,则返回错误;或者过滤特殊字符串后,对过滤后的目标进行唯一性检查,并进行短信验证码发送。


少客联盟- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与少客联盟立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin少客联盟享有帖子相关版权。
3、少客联盟管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin少客联盟的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
8、官方反馈邮箱:chinasuc@chinasuc.cn


上一篇:新手初级Web渗透经典
下一篇:ysoserial CommonsCollections 5 反序列化分析
Whatever is worth doing is worth doing well. juvenile hacker league
最新回复 (0)
    • 少客联盟
      2
        登录 注册 QQ登录(停用)
返回