某网站缝隙排查经历
在这儿共享一些之前对某网站会员/用户体系(一般域名都是passport.xx.com)进行缝隙检查查出的一些问题,这些问题大多都是逻辑类缝隙,运用缝隙进行进犯并不需求什么深邃的技能才干,所以损害特别大,把相关经历共享给我们期望我们能够自查。
这儿要阐明,下面许多缝隙的比方是依据现已取得有用的账号暗码(行话说便是密正的账号)的条件的,我们或许会问:
1、怎么或许拿到他人的账号和暗码?其实有许多网站都走漏过带明文暗码的账号库(也有一些账号库是不带暗码的,或者是MD5哈希后的暗码,不带暗码的能够用一些常见简略暗码测验,MD5后的暗码能够用云MD5暗码库来“解密”),许多人会用一些东西拿手头拿到的几百万个账号暗码针对某网站进行逐个的登录测验(这个进程叫做扫号),遇到有验证码的网站运用程序自动辨认暗码,更高档一点能够运用云打码渠道来辨认验证码,只要能登录那么这个账号暗码便是针对这个网站的密正账号,就能够以必定的价格卖给收号的人了(比方5元一个账号),扫号的人干的是纯技能活,至于收号的人拿到账号去干啥这就依据网站不同各不相同了(关于游戏网站的账号拿去后根本是洗号之类的)。
2、已然现已拿到了账号和暗码什么都能够干了,还谈什么缝隙?许多网站虽然有账号暗码能够登录,可是一些关键性操作往往有两层验证的(比方经过邮箱验证,经过手机验证),更何况有一些网站有账户安全策略,假如检测到账户不安全的话(比方是异地登录)或许会需求经过手机验证码验证后才干登录。所以一般情况下即便有他人的账号你也只能登录到他的后台看看,简直不或许做什么灵敏操作(比方提取账户余额、修正暗码之类的),只要进一步把一些绑定换绑之后才或许有进一步的行为。
先验证后操作没有绑定在一起全体对待
假定自己的账号是A而且现已绑定过邮箱,手头密正的账号是B。
1、运用A账号登陆网站,在浏览器中开两个页签。
2、进入替换邮箱的功用,页面会提示需求获取验证码,点击获取后进入了“替换邮箱”界面,在这个界面中网站会要求你输入验证码以及期望替换的新邮箱。
3、方才不是打开了两个标签页面吗,到第二个标签页面点击登出,运用B的账号登陆进入网站后相同进入替换邮箱的功用,点击获取验证码按钮。
4、 在第一个页签替换邮箱的第二步输入一个新的要替换的邮箱xx,然后输入正确的验证码(到A账号绑定的邮箱检查验证码)完结替换邮箱的流程(其实当时登陆的账户已是B)。
5、在第二个页签改写一下页面,能够看到B的邮箱现已替换为xx。
也便是说替换邮箱这个操作的第二步直接读取了B的登陆信息进行了替换,而没有验证B现已不是最初提出替换邮箱恳求的A了,没有把操作作为全体验证导致缝隙的发作。假如网站有这个逻辑缝隙,那么很或许替换手机功用也能够这么破。
安全相关的接口界说的太通用导致能够暴力破解
假如玩游戏或许知道有一种叫做密保卡的东西,比方是一个X*Y(比方10*10)的二维表格,每一格都是一个数字,玩家在做灵敏操作的时分需求输入密保卡上指定位子的三个数字,悉数输入正确后才干够进行操作。比方会要求你输入(A10,C2,F8)三个坐标的数字,你需求检查密保卡找到这三个数字顺次输入,假如你没有密保卡,密保卡的数字规模是0-99那么每一个数字猜中的概率就现已是1%了,三个数字悉数猜中的概率是万分之一(左右),所以是一种简略且根本有用的安全验证方法。
现在AJAX技能用的许多,假如关于密保卡验证的操作也采用了一个相似checkmibao/?locations=A10,C2,F8&code=11,22,33这样的AJAX恳求当然能够到达功用需求,可是有没有想过,这种API(假如没有恳求频度约束)十分简单快速爆炸,彻底能够模仿这样的恳求checkmibao/?locations=A1,A1,A1&code={0},{0},{0},参数{0}来一个循环从0到99,假如回来的结果是正确的则A1的密保现已得出了,不然持续查询,关于表格的其它坐标A2-J10也相同进行相同的操作很快就能够把整个密保卡“核算”出来。应该怎么改?API彻底不应该设locations参数,由于用户在验证密保卡的时分体系是知道验证的三个坐标的,仅仅是checkmibao/?code=11,22,33这样就能够了。
[1] [2] 黑客接单网