5. 重新绑定
5.1 手机绑定
案例:某邮箱可直接修改其他用户密码;
某邮箱弱口令,手机绑定业务程序设计存在缺陷可导致直接修改密码。
详细说明:
首先注册一个 126 邮箱测试帐号;
然后会跳转到一个手机绑定的安全提示上;
这个链接注意下参数,有个 uid,将 uid 修改为要黑掉的某邮箱账号;填入一个你可控的手机号码,将确认码发回来:
点击确定并进入邮箱,这个时候这个目标邮箱已经被越权绑定了密保手机。
然后走正常的密码取回流程,发现这个邮箱多了一个通过手机的取回方式,这个手机尾号就是我刚刚绑定的手机!
密码重置成功!
存在权限判断不当,越权操作的接口是:
http://xxxxxx.mail.126.com/mobileserv/mbp.do?uid=[写你想要进行修改的账号]&backurl=
修复方案:
进行程序逻辑改正 或直接进行删除修改
5.2 邮箱绑定
案例:某彩票设计缺陷可修改任意用户密码
1、注册帐号 wooyun;
2、绑定邮箱;
3、找回密码;
4、获得 url:
http://www.xxxxx.com/user/fund!xxxdMobileOrEmail.action?userIdCard=用户ID&isBindEmail=1&bindEmail=邮箱;
5、wooyun 账号登录状态下,修改第 5 步的用户 ID 为他人 ID
(这个可以从网站排行榜获取),邮箱用自己的注册的邮箱打开,如图:
虽然这是登录状态还是wooyun,但是修改的确实是指定的 id 邮箱数据;
6、修改指定用户 id 邮箱成功;
7、继续,找回密码,获得系统发到自己邮箱的随机密码;
8、登录成功;
6. 服务器验证
6.1 最终提交步骤
案例:某旅行网任意老板密码修改
密码重置功能相当强大,支持“用户名”、“手机号”、“邮箱帐号”、“卡号”重置;换句话说,只要我们只要以上 4 种信息中的任意一种,便可使用该功能重置相应用户的密码。
1.首先注册两枚用户,sina.com 用户和 sina.cn 用户,对 sina.cn 用户进行密码重置;
2.填入相应的 sina.cn 用户的邮箱帐号,点击下一步,使用绑定邮箱进行密码重置;
3.登录 sina.cn 邮箱获取到系统发送的密码重置链接;
4.访问系统发送的密码重置链接,进行密码重置;
5.设置好我们需要重置的密码,点击保存并抓包分析发现数据中一个熟悉的参数;
6.是的,在数据中发现唯一标识用户身份的“Uid”信息,而这个信息在密码重置的第二步时,系统会“主动”提供给我们;
7.接下来获取 sina.com 用户的"Uid"信息;
8.使用 sina.com 用户的 Uid 值替换 sina.cn 用户的 Uid 参数并提交;
9.好吧,系统已经恭喜我“密码修改成功”;
10.返回用户登录页面,使用 sina.com 用户邮箱帐号、刚刚修改的密码成功登录;
PS:获取 4 种信息的任意一种,我们就能获取用户的 Uid 信息,那么也就可以成功重置该用户的密码
修复方案:
建议重置过程每个步骤都校验用户身份的合法性!
6.2 服务器验证可控内容
案例:某拼车网之任意密码找回
前面提交过通过爆破验证码找回密码,这里是另外一个地方,也是密码找回首先看看正常流程密码找回时的数据包:
存在的问题是服务器在验证时只验证了loginid 和userid 是否匹配,匹配就可以重置密码, 所以我们可以抓正常重置密码的数据包,然后提交其他用户的 loginid 和 userid,loginid 可以为邮箱和手机号。
并且这个数据包的存活时间非常长,几个小时都 ok.那么怎么得到loginid 和 userid 呢?往下看
重置任意用户密码步骤:
1,注册一个用户,找回密码抓取数据包
2,可以在拼车页面查看联系方式,找到手机号
例如:http://www.xxxxxxxx.cn/yichang/11119889.html 查看联系方式:得到 login-id 手机号码:13872652111
3,接下来点击图像,
跳转到链接 http://www.xxxxxxxx.cn/user/1461883.html 得到:
user-ID:1461883
4,在抓取的数据包中,填入对应的 loginid 和 userid,repeat 数据包,重置密码成功
6.3 服务器验证验证逻辑为空
案例:某政企使用邮件系统疑似存在通用设计问题可影响相关部委邮件系统
详细说明:
邮件系统取回密码功能设计逻辑错误,存在认证绕过漏洞,通过抓取数据包可通过修改报文, 将找回问题答案参数删除后,直接进行对密码更改;
国家航天局(国防科工局);
国家国土资源部;
密码找回;
数据包抓取修改;
密码重置成功,
账户都是百度得到的(本次以账户为例 [email protected] 密码重置为 admin!@#)请尽快修补漏洞修改密码;
登陆成功;
貌似许多举报邮件,仅为测试未在深入;
修复方案:
1、对密码找回机制进行修改
2、或删除密码找回机制
7. 用户身份验证
7.1 账号与手机号码的绑定
案例:某通行证任意密码重置
某通行证任意密码重置,导致大量用户资料泄露,可影响全市天翼手机用户。
详细说明:
http://xx.xxxx.189.cn/
利用步骤:
1、在登陆页面中选择找回密码,输入自己的手机号,获取一条短信认证码。
2、chrome 浏览器在接下来的页面中审查元素,将 hidden 的 form 中找到自己的手机号,并改为目标手机号(仅限上海电信)。
3、输入步骤 2 获得的短信验证码及一定强度密码,并提交。
4、使用对方账号及修改后的页面登陆电信通行证、189 邮箱等业务,我这里把涉及测试用户的通行证密码全部改为“Test123.”。
|
综上所述,此漏洞可影响全市天翼手机用户,包括网厅、189 邮箱、易信、爱音乐等,就不一一列举了。
作为一名负责任的白帽子,我认为很有必要补充一些内容,截至目前,影响范围比我想象的还要大,偶然试了一下网厅,发现 189 通行证可查询目标用户网厅数据,包括但不限于账单地址、费用明细、分账序号、设备号码、套餐信息等敏感数据(可查土豪、社工等)。
修复方案:
服务器端验证用户提交,对用户增加随机值绑定。
7.2 账号与邮箱账号的绑定
案例:某网修改任意用户密码漏洞
某网修改任意用户密码漏洞(非爆破) 。
详细说明:
和讯网通过邮箱修改密码,可以修改任意用户密码;
通过邮箱找回密码;
点击重新发送邮件;
拦截请求,修改成自己的邮箱;
进入自己的邮箱,点击链接,修改成功;
登陆两个账户看看;
8. 找回步骤
8.1 跳过验证步骤、找回方式,直接到设置新密码页面
案例:某 IDC 机房信息安全管理系统设计缺陷致使系统沦陷
某 IDC 机房信息安全管理系统设计缺陷致使系统沦陷监控大量 IP 段。
详细说明:
企业侧互联网综合管理平台:180.96.19.196:8080/ucenter ,
重置密码漏洞:输入用户名并抓包,将 step 改为 4 即可;
监控的 IP 段:
61.155.8.1-61.155.8.255
61.155.11.1-61.155.11.127
61.155.237.1-61.155.237.255
61.155.238.1-61.155.238.255
180.96.18.1-180.96.18.255
61.132.74.1-61.132.74.255
61.132.75.1-61.132.75.255
61.155.5.1-61.155.5.255
61.155.6.1-61.155.6.255
61.155.7.1-61.155.7.255
61.155.9.1-61.155.9.255
61.155.106.1-61.155.106.255
61.155.107.1-61.155.107.255
61.155.236.1-61.155.236.255
属于某电信IDC 中心有各种各样的监控功能;
9. 本地验证
9.1 在本地验证服务器的返回信息
确定是否执行重置密码,但是其返回信息是可控的内容,或者可以得到的内容。
案例:某品牌重置任意用户密码漏洞
详细说明:
https://account.xxxx.com/index.php?q=user/getbackpass&back=http%3A%2F%2Fwww.xxxx.com%2F
找回密码,输入要找回的手机号,以找回手机号:13723782334 示例
https://account.xxxx.com/index.php?q=user/confirmid&type=1&sign=e9fb209c9416fb0 312980c47c4537f0b
获取验证码-随便输入一个验证码,提交确认的时候 response 拦截;
收到响应 :
修改为:
{"flag":1,"msg":"?q=user/resetPass&username=&type=1&sign=e9fb209c9416fb0312980 c47c4537f0b"}
Forward 出去响应包,即可绕过重置验证。
设置密码,直接提交,帐号密码为 13723782334:wooyun123;
9.2 发送短信等验证信息的动作在本地进行
可以通过修改返回包进行控制
案例:某品牌修改任意帐号密码
1. 使用找回密码功能,输入指定要找回密码的帐户,本次测试以官方帐号“某社区”为例,使用抓包工具抓包;
返回如下数据包:
2.将数据包中的 acctype 值改为 1,去掉 email,修改 mobie 为自己的手机号码;
继续提交;
3.自己的手机将会收到验证码,填入收到的验证码和新密码即可完成;
10.注入
10.1 在找回密码处存在注入漏洞
案例:某人力资源管理软件,另一处 SQL 注入漏洞(通杀所有版本)
详细说明:
1.漏洞出在[重置密码]功能这,密码找回输入用户处由于未进行过滤导致 SQL 注入漏洞。
2.漏洞文件 http://x.x.x.x/hrss/rm/xxxx.xx.jsp?
3.抓包丢 SQLMAP 里跑数据库名:
./xxxx.xx -r xx.txt
结果如下:
[15:27:19] [INFO] the back-end DBMS is Oracle back-end DBMS: Oracle
[15:27:19] [WARNING] schema names are going to be used on Oracle for enumerationas the counterpart to database names on other DBMSes
[15:27:19] [INFO] fetching database (schema) names
[15:27:20] [INFO] the SQL query used returns 31 entries
[15:27:21] [INFO] retrieved: APEX_030200
[15:27:21] [INFO] retrieved: APPQOSSYS
[15:27:22] [INFO] retrieved: CTXSYS
[15:27:23] [INFO] retrieved: DBSNMP
[15:27:24] [INFO] retrieved: EFDC
[15:27:25] [INFO] retrieved: EXFSYS
[15:27:26] [INFO] retrieved: FLOWS_FILES
[15:27:27] [INFO] retrieved: IUFO
[15:27:28] [INFO] retrieved: IUFO57
[15:27:29] [INFO] retrieved: JQ
[15:27:30] [INFO] retrieved: MCCPT
[15:27:31] [INFO] retrieved: MCCWK
[15:27:32] [INFO] retrieved: MDSYS
[15:27:33] [INFO] retrieved: NC57
[15:27:34] [INFO] retrieved: NC57ZYWK
[15:27:35] [INFO] retrieved: NCPORTAL
[15:27:36] [INFO] retrieved: OLAPSYS
[15:27:37] [INFO] retrieved: ORDDATA
[15:27:38] [INFO] retrieved: ORDSYS
[15:27:39] [INFO] retrieved: OUTLN
[15:27:40] [INFO] retrieved: OWBSYS
[15:27:41] [INFO] retrieved: RMAN
[15:27:42] [INFO] retrieved: SCOTT
[15:27:42] [INFO] retrieved: SYS
[15:27:43] [INFO] retrieved: SYSMAN
[15:27:46] [INFO] retrieved: SYSTEM
[15:27:47] [INFO] retrieved: V3XUSER
[15:27:47] [INFO] retrieved: WMSYS
[15:27:48] [INFO] retrieved: WX
[15:27:49] [INFO] retrieved: XDB
[15:27:50] [INFO] retrieved: ZYTJWK
11.Token 生成
11.1 Token 生成可控
案例:某网再一次重置任意账号密码(依旧非暴力)
依旧利用现有的账号 输入正确的验证码 然后抓包分析;
图中箭头方向的 cookie 值跟以前发生了变化,以前是明文邮箱现在变成 32 位加密字符串,不过一看这字符串很眼熟,于是把我的 qq 邮箱进行了一次 md5加密,发现一样。
于是把[email protected] 进行 md5 加密一次,然后替换掉cookie 值,成功返回了用于重置密码的最关键字符串;
既然拿到了字符串接着就是重置密码了
这次需要点击发送验证码后才能重置密码;
然后直接访问重置密码url 进行密码重置;
密码被重置为wooyun123;
12.注册覆盖
12.1 注册重复的用户名
案例:某公司奇葩方式重置任意用户密码(admin 用户演示)
刚看到 12306 用户泄漏,于是顺便走访了某公司的网站,站多处设计不合理,居然没有找回密码的功能。
详 细 说 明 :
http://www.xxxx.com/jsp/ywbl/zc.jsp
在注册用户时,如果先输入用户名,在鼠标离开后会进行用户名是否存在的校验,但是如果把用户名留着最后输入,比如输入一个已有的用户名 admin,在鼠标离开输入框并点击提交按钮后,虽然也会进行用户名是否存在的校验,但表单仍然提交上去了,这时候,我们会发现我们已经以admin 的用户登录进来了,这时候用户的密码被改为我们之前填写的密码,但原用户的所有信息却没有改变,也就是说这时候我们获取了用户的信息,姓名、身份证、手机号等等。
这时候我们也可以用修改的用户登录中铁快运商城的网站,在商城网站中我们也可以看到用户的一些资料。至于如果看到了用户的快递信息,以此来快递截单的可能性就不知道了。
另一个情况,在用户信息页面和修改密码页面,我们通过页面源代码,居然可以看到数据库的表名:
这是页面部分源码,可以看到表名是 p_cremember,表的主键是 U_ID,如果网站存在 sql 注入漏洞的话,或许可以爆出全部用户资料。
修复方案:
加强校验
13.Session 覆盖
13.1 Session 覆盖
案例:某公司任意修改用户密码(非爆破)
可任意更改用户密码。
详细说明:
通过自己账号忘记密码发送邮箱修改密码地址;
进入邮箱,不要打开;
在同浏览器内打开网站还是忘记密码输入要修改的账号;
这一步后停住;
在同一浏览器中打开发到我们邮箱的链接;
一定同一浏览器输入要修改的密码就可以了;
成功进入。
资源分享--书籍分享
CWE-394 未预期的状态编码或返回值 Unexpected Status Code or Return Value 结构: Simple Abstraction: Base 状态: Draft 被利用可能性: unkown 基本描述 The softwar…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论