最近有很多小伙伴咨询关于token可以被破解吗的问题,小编结合多年的经验整理出来一些破解获取token对应的资料,分享给大家。
0x01
现在的网站安全性越来越高,防爆破机制也越来越多,token 验证便是其中比较常见的一种。客户端每次请求服务器时,服务器会返回一个 token,下次请求时,客户端需要带上这个 token,否则服务器认为请求不合法。且这个 token 不可重复使用,每次请求都将生成新的 token,并导致旧的 token 失效。
0x02
token 机制使得我们的爆破变得困难了许多,但正所谓道高一尺魔高一丈,神器 BurpSuite 已经为我们提供了这一问题的解决方案,接下来就由老夫将这武林秘籍授予你们!(哈哈哈一不小心就中二了)
0x03
PIkachu 靶场第 4 关,token防爆破
首先浏览器设置代理,然后点击登录,burp 拦截到请求,可以看到请求携带了 token。
右键,Send to Repeater,然后点击 go,发送请求,提示 username or password is not exists~,并且可以看到返回了新的 token。
再次点击 go,又返回了新的 token,且提示 csrf token error,说明旧的 token 已经失效。
由此我们可以知道,每次请求服务端都会返回新的 token,并且会放在页面上,我们只需要将这个值拿出去,并且放到请求里带上即可。
0x04
在 Repeater 界面单机右键,Send to Intruder,来到 Intruder 界面。
点击 Position,点击 Clear,清除默认荷载,然后依次分别选择密码部分和 token 部分的值并点击 Add,(账号部分我就不选中了,因为我知道账号就是 admin),Attack Type 选择 Pitchfork,完成后如下图。
接着点击 Payloads,首先设置密码的字典,选择从文件加载。
然后设置 token,首先把 Payload Set 切换到 2,因为我们刚刚 Add 的时候 token 是在第二个位置,密码是在第一个,这个其实就是设置第几个位置的荷载的值。
点击 Options,找到 Grep-Extract,点击 Add。
弹出一个框,点击 fetch response(或者 refetch response)。
然后我们搜索 token,点击 旁边的 切换上一个和下一个,找到如下位置,然后双击选中 token 的值,如下图所示。
然后点击 ok,可以在 Grep - Extract 看到一条记录,就是我们刚刚加的。
接下来设置 Redirections,设置为 Always。
继续设置线程数,设置为 1 个线程,因为多线程会导致 token 出现问题。
回到 Payloads,将 Payload set 2 的 Payload type 设置为 Recursive grep,如下设置。
一切准备就绪,点击 start attack 开始爆破。
可以看到每次带上的 token 都是不一样的,第 4 条记录的 Length 和其他的不一样,为正确的账号密码 admin 123456。
至此成功绕过 token 验证。

token是个凭条,不过它比门票温柔多了,门票丢了重新花钱买,token丢了重新操作下认证一个就可以了,因此token丢失的代价是可以忍受的——前提是你别丢太频繁,要是让用户隔三差五就认证一次那就损失用户体验了。
客户端方面这个除非你有一个非常安全的办法,比如操作系统提供的隐私数据存储,那token肯定会存在泄露的问题。比如我拿到你的手机,把你的token拷出来,在过期之前就都可以以你的身份在别的地方登录。
解决这个问题的一个简单办法
1、在存储的时候把token进行对称加密存储,用时解开。
2、将请求URL、时间戳、token三者进行合并加盐签名,服务端校验有效性。
这两种办法的出发点都是:窃取你存储的数据较为容易,而反汇编你的程序hack你的加密解密和签名算法是比较难的。然而其实说难也不难,所以终究是防君子不防小人的做法。话说加密存储一个你要是被人扒开客户端看也不会被喷明文存储……
方法1它拿到存储的密文解不开、方法2它不知道你的签名算法和盐,两者可以结合食用。
但是如果token被人拷走,他自然也能植入到自己的手机里面,那到时候他的手机也可以以你的身份来用着,这你就瞎了。
于是可以提供一个让用户可以主动expire一个过去的token类似的机制,在被盗的时候能远程止损。
话说一个人连自己手机都保护不好还谈什么安全……
在网络层面上token明文传输的话会非常的危险,所以建议一定要使用HTTPS,并且把token放在post body里。
HTTP 是无状态的协议,服务端无法确认访问者的身份。
身份认证的方式有:
Cookie 的属性:
存在的问题:
工作机制:
优点:
存在的问题:
token 的鉴权流程:
登录成功之后生成一个 refreshToken,同时生成一个 Token ,两个 token 都回传到客户端,客户端对这两个 Token 都进行保存,其关系如下:
几个特点:
token 和 refreshToken 中包含了很多信息,最重要的几个是:用户信息、有效期。
客户端有两种类型的接口:功能性接口 refresh 接口;
功能性接口就是业务接口,需要身份验证时直接使用 token 作为令牌来调用。后台解析 token 获取到用户信息、有效期等;
refresh 接口就是使用 refreshToken 去生成新的 token 的接口;
refreshToken 是长时间不变的,一旦发生改变则表示登录状态失效,旧的 refreshToken 不能用来生成 token了,refreshToken 和 token 的关联关系也就失效了。
对于 token,采用 “客户端主动刷新 token ” “服务端设置并检测 token 有效性” 的方式来保证 token 的刷新频率,以此来防止 token 被破解,进而保证接口调用的安全性。
总结:
暴力破解 :暴力破解简单来说就是将密码进行逐个测试,直到找出正确的密码为止
暴力破解:是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作
暴力破解漏洞:如果一个web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高
暴力破解前准备 :
1. web系统的认证安全策略:
是否要求用户设置复杂的密码;
是否每次认证都使用安全的验证码
是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等)
是否采用了双因素认证
认证过程是否带有token信息
2.工具准备:准备合适的暴力破解工具以及一个有郊的字典
三个要点:
1. 对目标网站进行注册,搞清楚帐号密码的一些限制,比如目标站点要求密码必须是8位以上,字母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码
2. web管理面密码使用admin/administrator/root帐号的机率较高,可以使用这三个帐号 随便一个密码字典进行暴力破解
3. 破解过程中一定要注意观察提示,如有“用户名或密码错误”“密码错误”“用户名不存在”等相关提示,可进一步利用
暴力破解分类 :
B/S模式:浏览器服务器模式的认证过程是http协议实现的,因此可以用burpsuite抓包工具来破解
1. 不带验证码的认证的破解:可直接使用burpsuite加密码字典破解
2. 带验证码的认证的破解:如果是前端验证可使用burpsuite抓包绕过验证码来暴力破解,如果是后端验证,可使用爆破工具(如pkav)外接验证码识别器来暴力破解。(如果后台验证过程中验证码没有立即销毁,此验证码可使用24分钟)
3. 带token信息的认证的破解:(Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,客户端带上token代表具有执行某些操作的权利)token信息每次都不一样,需要burpsuite将服务器返回的token取出用于下一次请求。
C/S模式:客户端服务器模式的认证过程有多种协议实现的,因此需要用专用的集成化破解工具来破解,例如 Hydra、Bruter、X-scan
工具:
Bruter:密码暴力破解工具
Hydra:hydra是著名黑客组织thc的一款开源的暴力密码破解工具,支持多种协议,可以在线破解多种应用密码。
暴力破解的防范 :增加web系统的认证安全策略
要求用户设置复杂的密码
每次认证都使用安全的验证码
对尝试登录的行为进行判断和限制
采用双因素认证
认证过程带token信息
验证码安全 :
是一种区分用户是计算机还是人的全自动程序,可以防止:密码暴力破解、刷票、论坛灌水。可有效防护黑客对特定用户的密码暴力破解。
验证码分类 :
Gif动画验证码
手机短信验证码
手机语音验证码
视频验证码
验证码常见安全问题 :
客户端问题
服务端问题
基于Token验证
验证码太简单,容易被机器识别
暴破验证码
验证码安全防护 :
1) 强制要求输入验证码,否则,必须实施IP策略。 注意不要被X-Forwaded-For绕过了!
2) 验证码只能用一次,用完立即过期!不能再次使用
3) 验证码不要太弱。扭曲、变形、干扰线条、干扰背景色、变换字体等。
4) 大网站最好统一安全验证码,各处使用同一个验证码接口
思路点:暴力破解和验证码安全破解时也可以熟悉认证业务过程,并试图在业务过程中寻找业务逻辑漏洞。
弱口令:属于暴力破解漏洞的一种,是web认证界面使用了常用的或者较简单的用户名密码,使暴力破解变得简单。
只要你仔细阅读了上述,那么你就已经了解了破解获取token的相关知识,如果屏幕面前的你还有什么对token可以被破解吗好的建议和想法,欢迎各位再下面评论区评论出来,我们将及时回复。
免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com