深化了解Json Web Token之实战篇

访客5年前关于黑客接单1010

原本想用python DRF 的 JWT做,后来各种失利。终究尝试了用Php,发现十分便当。
PHP 版别 PHP 7.2.4-1+b2 (cli),也便是kali linux自带的php,至于composer的装置办法,以及各个库的运用办法在此不打开,需求的话能够自己查阅官方文档
php jwt库的评测
在jwt.io上有些php jwt的库,在此说一下运用下来的感觉。只取了评分前三的库:
firebase/php-jwt Star 3786
支撑PHP5/7;
操作十分简略,可是不具有许多功用,不是很引荐。
lcobucci/jwt Star Star 2729
支撑PHP5/7;
不具有JWE的办法,操作简略;
不具有多重JWS,JWE办法以及其对应序列化办法。
spomky-labs/jose Star 351
仅支撑 PHP 7;
功用完全,具有多重JWE,JWS,以及其对应序列化办法。以上两个都不具有。
0×01 JWT 进犯手法
JWT 的进犯手法包含以下内容:
参阅网站:https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries//。
1. 灵敏信息走漏
当服务端的秘钥泄密的时分,JWT的伪造就变得十分简略简单。对此,服务端应该妥善保管好私钥,避免被别人盗取。
2. 将加密办法改为’none’
下文实战中的 Juice Shop JWT issue 1 便是这个问题。之前谈及过nonsecure JWT的问题。
签名算法保证歹意用户在传输过程中不会修正JWT。可是标题中的alg字段能够更改为none。一些JWT库支撑无算法,即没有签名算法。当alg为none时,后端将不履行签名验证。将alg更改为none后,从JWT中删去签名数据(仅标题+’.'+ payload +’.')并将其提交给服务器。
处理对策:
不允许呈现 none 的办法;
将敞开 alg : none 作为一种额定的装备选项。
3.将算法RS256修正为HS256(非对称暗码算法=>对称暗码算法)
HS256运用密钥来签名和验证每个音讯。而RS256运用私钥对音讯进行签名并运用公钥进行认证。
假如将算法从RS256更改为HS256,则后端代码运用公钥作为密钥,然后运用HS256算法验证签名。因为进犯者有时能够获取公钥,因而进犯者能够将标头中的算法修正为HS256,然后运用RSA公钥对数据进行签名。
此刻,后端代码就会运用RSA公钥+HS256算法进行签名验证,然后让验证经过。
处理对策:
不允许 HS256等对称加密 算法读取秘钥。jwtpy便是约束了这种办法。当读取到 类似于 “— xxx key —” 的参数的时分应抛出过错;
将秘钥与验证算法彼此匹配。
4. HS256(对称加密)密钥破解
假如HS256密钥强度较弱,则能够直接强制运用,经过爆炸 HS256的秘钥能够完结该操作。难度比较低。处理对策很简略,运用杂乱的秘钥即可。
5. 过错的堆叠加密+签名验证假定
过错的堆叠加密
这种进犯发作在单个的或许嵌套的JWE中,咱们幻想一个JWE如下所示:
JWT RAW
    header : ...
    payload: "admin" : false
             "uid"   : 123
             "umail" : 123@126.com
             ...
JWE Main
    protected / unprotected
    recipients:
        en_key : key1
        en_key : key2
    cipher : xxx
在进犯者不修正秘钥的情况下,关于ciphertext进行修正。往往会导致解密的失利。可是,即使是失利,许多JWT的解密也是会有输出的,在没有附加认证数据(ADD)的情况下更是如此。进犯者关于ciphertext的内容进行修正,可能会让其他的数据无法解密,可是只需最终输出的payload中,有“admin”:true。 其意图就现已到达了。
处理对策:
关于JWE而言,应当解密一切数据,而非从解密的成果中提取单个需求的数据。别的,使用附加认证数据ADD,也是十分好的挑选。
签名假定验证
这种进犯发作嵌套的JWS中。咱们幻想一个嵌套的JWS,其包含了两层的部分,其结构如下:
JWT Main
    JWT Sub1
        payload
        Signature2
    Signature
现在,进犯者经过必定的办法,能够让外层的验证经过的时分,此刻,体系还应该查看内层的签名数据,假如不查看,进犯者就能够随意篡改payload的数据,来到达越权的意图。
处理对策:
因而关于嵌套JWS而言,应当验证一切层面的签名是否正确,而非验证最外层的签名是否正确就满足。
6. 无效椭圆曲线进犯
椭圆曲线加密是一种十分安全的办法,乃至从某种程度上而言,比RSA愈加安全。关于椭圆曲线的算法,在此不打开。
在椭圆曲线加密中,公钥是椭圆曲线上的一个点,而私钥仅仅一个坐落特别但十分大的范围内的数字。 假如未验证对这些操作的输入,那进犯者就能够进行规划,然后康复私钥。
而这种进犯已在曩昔中得到证明。这类进犯被称为无效曲线进犯。这种进犯比较杂乱,也规划到许多的数学知识。具体能够参阅文档:critical-vulnerability-uncovered-in-json-encryption。
处理对策:
查看传递给任何公共函数的一切输入是否有用是处理这类进犯的要害点。验证内容包含公钥是所选曲线的有用椭圆曲线点,以及私钥坐落有用值范围内。
7. 替换进犯
在这种进犯中,进犯者需求至少取得两种不同的JWT,然后进犯者能够将令牌中的一个或许两个用在其他的当地。
在JWT中,替换共叽有两种办法,咱们称他们为相同接收方进犯(跨越式JWT)和不同接收方进犯。
不同接收方进犯
咱们能够想象一个事务逻辑如下:
Auth 组织,有着自己的私钥,而且给 App1 和 App2 发放了两个公钥,用于验证签名;
Attacker 使用自己的秘钥登录了 App1。

[1] [2] [3]  黑客接单网

相关文章

PHP弱类型安全问题总结

 前段时间做了南京邮电大学网络攻防渠道上面的标题,写了一个writeup之后,还有必要总结一下。因为做的标题都是web类型的,一切的标题都是运用PHP来写的,所以许多标题并没有调查到传统的如SQL注入...

【对立蠕虫】怎么维护网页里的按钮,不被 XSS 主动点击

前语 XSS 主动点按钮有什么损害? 在交际网络里,大多操作都是经过点击按钮建议的。例如宣布留言,假设留言体系有 BUG,那么 XSS 就能主动点击发送按钮,发布带有恶意代码的留言。老友看了中招后,又...

一种绕过约束下载论文的思路

注:本文下面的内容仅评论绕过思路,作为技能交流之用。咱们下载论文仍是应该经过正规渠道,付费下载,尊重各位站长的劳动成果。灵敏图片和代码中触及站点的内容均已打码。 有时候要研讨技能,咱们也需求下载一些论...

PHP的两个特性导致waf绕过注入

1、HPP HTTP参数污染 HTTP参数污染指的是,在URL中提交相同键值的两个参数时,服务器端一般会进行一些处理。比方Apache就要以最终一个参数为准,比方: user.php?id=111&a...

换个视点看看,为什么垂钓进犯总能成功

当我榜首次收到银行发来的“安全”邮件时,我榜首反响便是这儿是否有诈?由于在我看来,它实在是太像垂钓邮件了。这封躺在收件箱里的邮件来历于我银行司理的个人邮箱地址,而非Chase银行的官方邮箱。邮件中不...

新手攻略:DVWA-1.9全等级教程之CSRF

现在,最新的DVWA现已更新到1.9版别(http://www.dvwa.co.uk/),而网上的教程大多停留在旧版别,并且没有针对DVWA high等级的教程,因而萌发了一个编撰新手教程的主意,过错...