攻防渗透 | WebsocketAndTimer内存马的查杀分析和代码实现
2023-7-16 12:34:52 Author: www.freebuf.com(查看原文) 阅读量:15 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Preface

前面谈到了Upgrade内存马的查和杀的步骤,这里我们谈谈websocket层面上以及timer思想的内存马的查和杀的思路

websocket

review

在动态添加一个websocket的关键位置是在WsServerContainer#addEndpoint方法中

image-20230630210015615.png

将我们构建的恶意的ServerEndpointConfig对象,在获取了其的path路径以及将对应的endpointClass封装成ExactPathMatch对象之后传入configExactMatchMap属性中保存

而对于websocket的处理,主要是在创建WsServerContainer的过程中添加了WsFilter过滤器

WsFilter类中的doFilter方法中

image-20230630212811005.png

将会在每次请求的时候进行拦截,在这个过程中通过调用WsServerContainer#findMapping方法中根据path来获取对应的映射结果

image-20230630213020758.png

这里的findMapping方法获取映射结果也就是从configExactMatchMap属性中获取对应的ExactPathMatch对象,这里也就和前面的调用addEndpoint方法向configExactMatchMap属性中写入值结合了起来

当然,如果没有这个映射结果,这里将会调用chain.doFilter调用下一个过滤器

detect

看看使用getWebsocketMaps方法来获取所有endpointClass的方式:

image-20230630214604772.png

前面提到了addEnpoint方法是向configExactMatchMap这个Map对象中添加元素

我们在获取了configExactMatchMap属性值之后,通过遍历这个Map对象的元素,其中每个元素的value值为ExactPathMatch对象

image-20230630214900539.png

关键的是在config属性中,存放的是我们传入的ServerEndpoingConfig对象值

image-20230630214945771.png

而在该类对象中存在有两个关键的属性pathendpointClass

这里的path就是我们的路由,这里的endpointClass


文章来源: https://www.freebuf.com/articles/web/372192.html
如有侵权请联系:admin#unsafe.sh