本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== 用户体系 ====== 现在的互联网公司几乎都有自己的用户体系,而这套用户体系当中可能存在很多问题。 在此用乌云主站上已经报过的相关漏洞总结一下,这个体系当中出现的林林总总的问题: ==== 1、越权操作 ==== ---- 上面说过了只要对数据库进行增、删、改、查询的情况都可能存在越权。我们来看一般我们在web应用开发时操作数据库常会出现的一般语句: 增加: insert into tablename values(一些字段) where userid/username=12345/用户名 参考例子:[[http://www.wooyun.org/bugs/wooyun-2010-033542|爱拍越权漏洞及设计不合理漏洞大礼包(妹子哭了)]] 删除: delete from tablename where id=123 参考例子:[[http://www.wooyun.org/bugs/wooyun-2010-039358|百度创意专家某功能平行权限漏洞(可删除他人素材)]] 更改: update 一些字段 tablename set 一些字段 where userid/username=12345/用户名 参考例子:[[http://www.wooyun.org/bugs/wooyun-2010-036411|搜狐白社会任意用户信息修改漏洞]] 查询: select * from tablename where id=12345 参考例子:[[http://www.wooyun.org/bugs/wooyun-2010-033748|Like团用户信息泄露+越权漏洞(可获取大量用户住址联系信息)]] 大家可以看到,以上语句都涉及where,而后面的userid或username即是越权的突破口。在操作数据库时功能请求中往往会带着一些参数来用于辨别信息的唯一值。而这些参数就是我们越权时需要注意的。 在web开发中判断用户身份的字段往往是不会在客户端传递的。用户登录系统后,开发人员一般会创建一个session来保存用户名。当用户在查看、修改个人信息等需要判定用户身份时,就直接从session中获取,而不会在客户端传递,也就避免了篡改。但若出现从客户端传递的话,那么就必须要有一步权限验证的要求了。所以在测试越权时要用抓包工具截获请求,细览下可能存在辨别信息的唯一值,来进行测试。这里要说一点,传输的参数并不一定在请求参数中,也有可能存在链接等位置。如: [[http://www.wooyun.org/bugs/wooyun-2010-031826|虾米网送娃娃漏洞(平行权限漏洞)]] ==== 2、cookie验证问题 ==== ---- 一些网站对于用户是否成功登录不是看用户名与密码是否与数据库里面的匹配,而是看cookies是否为空或session是否为true。这样的问题的假设就是开发者认为用户能够登录,那么cookies就不会为空或session就不会为false。但是逻辑缺陷很明显,那么只要能知道用户ID,然后构造一个cookies或让session值为true就可以绕过这样的认证了。 参考例子:[[http://www.wooyun.org/bugs/wooyun-2014-051424|WooYun: 益云广告平台任意帐号登录]] ==== 3、密码重置流程 ==== ---- 密码找回逻辑测试一般流程 首先尝试正常密码找回流程,选择不同找回方式,记录所有数据包 分析数据包,找到敏感部分 分析后台找回机制所采用的验证手段 修改数据包验证推测 === 3.1 用户凭证暴力破解 === 四位或者六位的纯数字 例子 [[http://www.wooyun.org/bugs/wooyun-2012-011833|当当网任意用户密码修改漏洞]] [[http://www.wooyun.org/bugs/wooyun-2012-011720|微信任意用户密码修改漏洞]] === 3.2 返回凭证 === url返回验证码及token 例子 [[http://www.wooyun.org/bugs/wooyun-2012-05630|走秀网秀团任意密码修改缺陷]] [[http://www.wooyun.org/bugs/wooyun-2010-058210|天天网任意账户密码重置(二)]] === 3.3 密码找回凭证在页面中 === 通过密保问题找回密码 例子 [[http://www.wooyun.org/bugs/wooyun-2012-04728|sohu邮箱任意用户密码重置]] === 3.4 返回短信验证码 === 例子 [[http://www.wooyun.org/bugs/wooyun-2010-085124|新浪某站任意用户密码修改(验证码与取回逻辑设计不当)]] === 3.5 邮箱弱token === 时间戳的md5 例子 [[http://www.wooyun.org/bugs/wooyun-2012-08333|奇虎360任意用户密码修改漏洞]] === 3.6 用户名 & 服务器时间 === [[http://www.wooyun.org/bugs/wooyun-2015-090226|中兴某网站任意用户密码重置漏洞(经典设计缺陷案例)]] === 3.7 用户凭证有效性 === 短信验证码 例子 [[http://www.wooyun.org/bugs/wooyun-2010-053349|OPPO手机重置任意账户密码(3)]] [[http://www.wooyun.org/bugs/wooyun-2010-053079|第二次重置OPPO手机官网任意账户密码(秒改)]] [[http://www.wooyun.org/bugs/wooyun-2010-020032|OPPO修改任意帐号密码]] === 3.8 邮箱token === 例子 [[http://www.wooyun.org/bugs/wooyun-2012-012572|身份通任意密码修改-泄漏大量公民信息]] === 3.9 重置密码token === 例子 [[http://www.wooyun.org/bugs/wooyun-2010-078208|魅族的账号系统内存在漏洞可导致任意账户的密码重置]] === 3.10 重新绑定 === 手机绑定 例子 [[http://www.wooyun.org/bugs/wooyun-2012-08307|网易邮箱可直接修改其他用户密码]] [[http://www.wooyun.org/bugs/wooyun-2010-081467|12308可修改任意用户密码]] === 3.11 邮箱绑定 === 例子 [[http://www.wooyun.org/bugs/wooyun-2015-092319|某彩票设计缺陷可修改任意用户密码]] [[http://www.wooyun.org/bugs/wooyun-2010-086726|中国工控网任意用户密码重置漏洞]] === 3.12 服务器验证 === 最终提交步骤 例子 [[http://www.wooyun.org/bugs/wooyun-2013-018263|携程旅行网任意老板密码修改(庆在wooyun第100洞)]] === 3.13 服务器验证可控内容 === 例子 [[http://www.wooyun.org/bugs/wooyun-2014-080278|AA拼车网之任意密码找回2]] [[http://www.wooyun.org/bugs/wooyun-2010-082582|四川我要去哪517旅行网重置任意账号密码漏洞]] === 3.14 服务器验证验证逻辑为空 === 例子 [[http://www.wooyun.org/bugs/wooyun-2015-088927|某政企使用邮件系统疑似存在通用设计问题]] === 3.15 用户身份验证 === 账号与手机号码的绑定 [[http://www.wooyun.org/bugs/wooyun-2014-075941|上海电信通行证任意密码重置]] === 3.16 账号与邮箱账号的绑定 === 例子 [[http://www.wooyun.org/bugs/wooyun-2010-078208|魅族的账号系统内存在漏洞可导致任意账户的密码重置]] [[http://www.wooyun.org/bugs/wooyun-2015-091216|和讯网修改任意用户密码漏洞]] === 3.17 找回步骤 === 跳过验证步骤、找回方式,直接到设置新密码页面 例子 [[http://www.wooyun.org/bugs/wooyun-2010-042404|OPPO手机同步密码随意修改,短信通讯录随意查看]] [[http://www.wooyun.org/bugs/wooyun-2015-098765|中国电信某IDC机房信息安全管理系统设计缺陷致使系统沦陷]] === 3.18 本地验证 === 在本地验证服务器的返回信息,确定是否执行重置密码,但是其返回信息是可控的内容,或者可以得到的内容 例子 [[http://www.wooyun.org/bugs/wooyun-2010-083035|看我如何重置乐峰网供应商管理系统任意用户密码(管理员已被重置)]] [[http://www.wooyun.org/bugs/wooyun-2014-069987|oppo重置任意用户密码漏洞(4)]] === 3.19 发送短信等验证信息的动作在本地进行,可以通过修改返回包进行控制 === 例子 [[http://www.wooyun.org/bugs/wooyun-2010-020532|OPPO修改任意帐号密码-3]] [[http://www.wooyun.org/bugs/wooyun-2010-020425|OPPO修改任意帐号密码-2]] === 3.20 注入 === 在找回密码处存在注入漏洞 例子 [[http://www.wooyun.org/bugs/wooyun-2010-068060|用友人力资源管理软件(e-HR)另一处SQL注入漏洞(通杀所有版本)]] === 3.21 Token生成 === token生成可控 例子 [[http://www.wooyun.org/bugs/wooyun-2015-094242|天天网任意账号密码重置(非暴力温柔修改)]] [[http://www.wooyun.org/bugs/wooyun-2015-095729|天天网再一次重置任意账号密码(依旧非暴力)]] === 3.22 注册覆盖 === 注册重复的用户名 例子 [[http://www.wooyun.org/bugs/wooyun-2010-088708|中铁快运奇葩方式重置任意用户密码(admin用户演示)]] === 3.23 session覆盖 === 例子 [[http://www.wooyun.org/bugs/wooyun-2014-085843|聚美优品任意修改用户密码(非爆破)]]