0x01 楼兰案例总结
1.任意密码重置——效验码
- 漏洞: 效验码不过期机制 可重复使用
POC: 在修改密码界面点击修改密码 --抓包
发现一个参数 passcode (姑且理解为效验码)
删除这个参数后 修改用户ID 修改成功测试结果: passcode默认为空
提交了找回密码的申请 passcode数值存在
未提交找回密码 passcode数值不存在
拓展: 任意用户--注册
未注册手机号 and 未点击发送验证码 -->验证码参数默认为空
验证码参数 修改为空 --> 注册成功
2.任意密码重置——重新绑定
知识点:逻辑漏洞+csrf+社工
- 目的:重置密码的新姿势-->修改账户绑定的邮箱为自己的邮箱
漏洞:注册邮箱时链接额并没有用户信息,
只是单纯的将我的邮箱绑定,
点击这链接的用户便会绑定为我的邮箱
如果用户非登陆状态,那么会提示用户登陆,然后再绑定POC: 向用户发送一个邮件:包含绑定邮箱的url
通过访问用户首页来获得用户昵称,利用userid来遍历
遍历出用户邮箱,手机号然后以站点的名义发送csrf链接
凭借已掌握的用户信息。向客服小姐姐社工出绑定咱们邮箱的用户名
3.任意密码重置——设置新密码处替换用户id
- 目的:修改密码
- 漏洞:在最后设置新密码处,尽管检验了用户名、
手机号、验证码等诸多参数此时便可以其他信息
都是自己用户正确的,但是id却是受害者的id - POC: ID没有做效验
4.任意密码重置——session覆盖
sesion机制
- 同一台终端不同浏览器表示不同会话
而相同浏览器是同一个会话
- 目的:找回密码时可修改要找回手机号
- 漏洞:同一浏览器下的sessionid可以重复提交使用
POC: 在找回密码界面,先使用自己的用户并点击下一步->重置密码界面 (session)为以通过校验的状态
重新打开一个找回密码界面,输入目标手机号,不点发送验证码,随便输入验证码后,点击下一步时抓包
在抓到的包里修改已通过效验状态的session
拓展: 两种姿势
- 自己的邮箱收到重置链接后;
重新找回受害者密码,受害者身份发送重置链接之后,再点击自己的重置链接,此时修改的便是受害者账户密码 (以受害者的身份点击重置链接;服务端:该用户等待验证。然后用户验证通过) - 自己的手机收到短信验证码后,成功输入;重新找回受害者密码,然后不发送短信,直接跳转到设置新密码步骤
5.任意密码重置——跳过身份检验步骤
找回密码的三个步骤
- 验证手机号/邮箱
- 重置密码
- 修改成功
- 漏洞:没有对找回密码的每一个步骤全部进行验证(典型的信任域问题)
- POC: 从步骤1直接跳转到步骤3 跳过步骤2
- 总结:先使用自己的账号走一遍,获取每个步骤的页面链接,记录页面三对应输入新密码的链接;
重置受害者时,获取验证码后,直接跳转到页面三
see also : http://www.teagle.top/index.php/archives/34/
6.任意密码重置——用户名未绑定邮箱号/手机号
- 漏洞: 在请求包里会有明确的用户名、手机号/邮箱字段
- POC : 注册两个账号 :账号A | 账号B
账号A申诉找回密码,执行到最后一步提交时,抓包修改 用户A的id ——> 用户B的id;
用户B收到了用户A找回的新密码
拓展
- 四个参数:用户名、手机号、随机值(随机返回)、验证码(手机验证码)
- 输入用户名获取验证码,修改接受验证码的手机号为自己的号码,自己手机成功接收验证码,提交到网站进行验证
- 手机号找回时,返回一个随机的值,该随机值顶替手机号的角色,后续只检验该随机值(手机号)与验证码是否匹配
- 用户名未绑定邮箱账号
- 手机号加密,修改为未加密的依然可以
7.任意密码重置——客户端验证绕过
- 漏洞:服务端返回到客户端的response请求 可抓包修改
POC: 客户端 提交验证请求到 服务端
服务端 返回验结果 客户端
该验证结果 可以通过抓取返回包进行修改,
从而欺骗客户端我们已经通过服务端验。防御:使用token令牌验证机制
8.任意密码重置——验证码
- 验证码可爆破 4位数验证码爆破
- 验证码回显 抓不到包时,注意response包:cookie/json
- 验证链接随机,链接关键参数回显
- 返回加密后的验证码
- 重置链接回显
- 直接在请求包内
0x02 wooyun总结
越权:
- 利用订单支付超时,修改未被加密的 orderId=1和order_userId=1参数 递增+1 ->遍历敏感信息
http://www.anquan.us/static/bugs/wooyun-2016-0213011.html - 收件人保存 抓包修改address_id参数 ->遍历敏感信息
http://www.anquan.us/static/bugs/wooyun-2016-0198593.html - 首页登陆时 选择第三方登陆方式 直接返回 自动跳转到已登录状态 -> 账户体系控制不严
http://www.anquan.us/static/bugs/wooyun-2016-0171274.html
任意密码重置:
- 获取验证码重置密码,点击下一步抓包—>发现验证码存在于包内;通过QQ群搜索目标用户名信息->任意密码重置
http://www.anquan.us/static/bugs/wooyun-2016-0205365.html - 重置密码界面点击获取验证邮件,抓包发现明文email修改为admin后,邮箱里收到admin重置密码链接 ->user越权admin用户
http://www.anquan.us/static/bugs/wooyun-2016-0177569.html - 重置密码获手机号验证码,抓包可随便修改手机号,直接重置密码 -> 手机号验证设计过于不严谨
http://www.anquan.us/static/bugs/wooyun-2016-0173018.html - 首先想办法获取用户名,在邮箱重置密码里抓包使用常用姓名字典爆破,找到一个已注册用户且未绑定邮箱的账户;
再想办法登陆,这里使用获取验证码方式找回密码,抓包可以直接看到明文的验证码,修改密码后直接登陆。 ->验证码机制不严谨
http://www.anquan.us/static/bugs/wooyun-2015-0166223.html - 找回密码,客户端直接返回验证码 ->写程序的可以下班了?
http://www.anquan.us/static/bugs/wooyun-2015-0153103.html
任意用户(注册/登陆):
- 注册新用户收到注册验证码后,抓包修改手机号并带着刚才收到的验证码一起发送出去,任意手机号注册成功 找回密码同理
->这里可以当作api接口 实现短信轰炸
http://www.anquan.us/static/bugs/wooyun-2016-0168411.html - 遍历userID=xx 从0到999进行简单fuzz,发现共46个段存在用户。 ->遍历敏感信息
账号登陆时,抓取响应包,发现里面没有设置cookie和token;
对比正确响应包和错误响应包发现关键在于获取cell、userName和userId;
使用正确的用户名错误的密码登陆,抓包修改正确响应包的格式,分别替换掉这三项,放行即登陆成功。 ->水平越权
http://www.anquan.us/static/bugs/wooyun-2015-0153441.html - 老样子 遍历orderId 这次只有email信息;
新姿势:修改email为你得email 当目标收到邮件时会直接发送到你的邮箱里(get更多敏感信息)
http://www.anquan.us/static/bugs/wooyun-2015-0152057.html
未授权访问:
- 微信公众号查询员工界面 验证码可重复使用,抓包爆破用户名工号信息 ->遍历敏感信息response返回包信息
http://www.anquan.us/static/bugs/wooyun-2016-0192902.html - 废弃的应用平台未关闭 直接访问管理员后台 ->遍历敏感信息
http://www.anquan.us/static/bugs/wooyun-2016-0177268.html
支付:
- 支付时抓包受限,把https改成http,修改订单金额参数为1下单后不付款,再次抓包修改为实际金额,下单成功
http://www.anquan.us/static/bugs/wooyun-2016-0194751.html - 提交订单号 订单和金额分开,可直接修改金额数值
http://www.anquan.us/static/bugs/wooyun-2015-0148098.html