渗透测测技巧之手机号爆破

2020-10-27 10:07:45 浏览数 (1)

前言

某次内部渗透测试的时候遇到登录处无图形验证码、频次等限制机制,这种是需要整改的,但是如果没挖到有效的漏洞可能就会被开发小哥哥挑战,让人整改也就没底气,遂进一步利用了下。

0x01 特殊手机号生成

业务系统在开发测试阶段基本上都会使用一些常用的测试数据,用户手机号也不列外,基本上不大会使用真实手机号,而是一些简单的测试手机号来进行调试。

手机号是由11位存数字组成,前三位是网络识别号,中间四位是地区编码,最后四位是用户号码。

编写脚本生产特殊手机号字典

代码语言:javascript复制
a = ['11111111', '00000000','22222222','33333333','44444444','55555555','66666666','77777777','88888888','99999999','12345678']
b = ['0000','1111','2222','3333','4444','5555','6666','7777','8888','9999']
c = ['0000','1111','2222','3333','4444','5555','6666','7777','8888','9999']

d1 = ['134','135','136','137','138','139','147','150','151','152','157','158','159','178','182','183','184','187','188']
d2 = ['130','131','132','145','155','156','185','186','176','175']
d3 = ['133','149','153','180','181','189','177']
phone = list()

for i in d1:
    for n in a:
        _ = '{}{}'.format(i, n)
        phone.append(_)
for i in d2:
    for n in a:
        _ = '{}{}'.format(i, n) 
for i in d3:
    for n in a:
        _ = '{}{}'.format(i, n) 

for i in d1:
    for n in b:
        for m in c:
            _ = '{}{}{}'.format(i, n, m)
            phone.append(_)
for i in d2:
    for n in b:
        for m in c:
            _ = '{}{}{}'.format(i, n, m)
            phone.append(_)
for i in d3:
    for n in b:
        for m in c:
            _ = '{}{}{}'.format(i, n, m)
            phone.append(_)

with open('/Users/w2n1ck/Desktop/info/phone.txt','a') as f:
    for i in phone:
        f.write(str(i)   'n')

代码比较简单,看下就懂了,情况不全,可自行添加Payload。

生成手机号如下

0x02 字典爆破

登录界面如下

很奇葩的一点是由于之前存在爆破,故整改时小哥哥把“密码登录”流程去掉了,但是接口验证还能使用,只不过无法登录了。但是可以利用这个验证接口判断手机号是否存在

成功爆破出存在的手机号。

使用短信验证码登录,由于没有做验证码失效及防爆破机制,导致可爆破短信验证码。

成功爆破出短验证码,登录系统。

编写报告,又可以高高兴兴、理直气壮的找小哥哥谈理想了。

公众号回复:phone,获取特殊手机号字典

0 人点赞