首先先说这个洞特色在哪里,特色在它的验证方式上。漏洞利用必须要具有被攻击者的姓名及身份证号,故此处风险有所缩小,建议配合其他漏洞一同使用。漏洞利用过程如下:
1、首先正常操作密码找回功能,可知其流程如下,
填写自己真实的姓名及身份证号码,
填写正确的短信验证码,如图:
填写需要篡改的密码,且记录下来,如“456abc”等,并进行抓包,如图:
数据包如下,记录下来
通过分析测试发现在post参数中并未包含关键因子也就是用户辨认的参数,当然有有可能加密到参数NewPassword、ConfirmPassword内,但根据以往的经验来看可能性不大,故怀疑到唯一可变数据
JSESSIONID2上,有多个测试可知问题确实处在参数JSESSIONID2上,利用过程如下,
1)在忘记密码功能中,填入被攻击者的姓名及身份证,
2)手机号码会从服务端返回过来,点击获取手机验证码后,任意填写如123456,并进行抓包,且此包不能Forward,也就是不能放行,且只有此时的JSESSIONID2的值才可以正常用(JSESSIONID2根据流程的不同在不停的变化中),表示此时的JSESSIONID2将用在最好的身份校验上。
如图:
提取数据包中的JSESSIONID2,带入到之前我们密码重置的数据包中组成新的数据包,如:
对此包进行重放可以达到篡改相应账户的目的,注:每组数据包有密码超时时间,大概在几分钟,所以整个操作过程要在短时间内完成,否则会提示“密码输入超时”,测试时走了不少弯路。
登录如下:由于是新申请用户未绑定银行卡,故登录后如下,成功登录