freeBuf
主站

分类

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

特色

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

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

ListenerValve内存马的查杀分析
RoboTerh 2023-06-30 22:22:40 409041
所属地 四川省

Preface

前面讲解了Servlet / Listener / Filter型的查杀思路,对于在前面三种类型中,Servlet和Filter都存在有特定的kill功能。

但是在上一个版本中并没有实现Listener的kill功能,这里主要是对Listener中kill功能的实现以及对tomcat中其他类型内存马的各种查杀功能的实现。

Addition

Listener

我们根据Listener内存马的注入细节可以知道大概流程。

内存马编写流程

  1. 首先获取到StardardContext对象

  2. 之后创建一个实现了ServletRequestListener 接口的监听器类

  3. 再然后通过调用StardardContext类的addApplicationEventListener方法进行Listener的添加

其中addApplicationEventListener方法主要是向StandardContext类中的applicationEventListenersList属性值中添加值

image-20230618212558068.png

对于kill功能,我们可以考虑,在检测出其可能为内存马的时候,将对应的listenerName对应的Listener从该List中删除,达到我们kill的目的。

看看最终成果

image-20230618212802245.png

从所有的Listeners中筛选出目标Listener,之后通过调用removeApplicationEventListener进行删除

image-20230618212906398.png

也即是反射获取属性值之后更改列表值。

看看效果,下图为注入内存马后

image-20230618213104212.png

删除内存马后也就没有该列表

Valve

detection

对于如何探测Valve类型的内存马,我们可以复习一下之前Valve内存马的注入流程。

对于Valve这种管道对象来说,在tomcat中间件中存在于四种容器中

也即是

  1. Engine

  2. Host

  3. Context

  4. Wrapper

每种容器中都包含有自己的管道对象

所以如果我们需要对该类型的内存马进行检测,应该获取所有这四种容器中的Valve实例,之后筛选不存在源文件的实例,将其划分为可能为内存马

Tomcat这四种容器的架构图如下:

image-20230619091037080.png

在接收一个连接的接入的之后首先按照顺序分别是从Engine/Host/Context/Wrapper来对请求进行响应

而在这四种容器中都存在有Valve,我们要想完全的检测所有的Valve内存马,我们就需要有下面的流程。

  1. 分别获取Engine / Host / Context / Wrapper等容器的Standard方法

可试读前40%内容
¥ 4.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 RoboTerh 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
红队攻防演练
RoboTerh LV.5
Q 2865153524
  • 39 文章数
  • 93 关注者
JSP型内存马的原理学习与实现
2023-09-08
攻防渗透 | WebsocketAndTimer内存马的查杀分析和代码实现
2023-07-16
ExecutorAndUpgrade内存马的查杀分析和代码实现
2023-07-05
文章目录