Apache log4j专项测试-Skywalking注入冰蝎内存马

admin 2022年5月17日09:55:05评论371 views字数 1518阅读5分3秒阅读模式

目录:

        一、问题描述

        二、环境说明

        三、原理分析

作者:水木逸轩@深蓝攻防实验室

 

01

问题描述

    在对Apache组件进行log4j的专项测试中,发现Jetty内存马无法对SkyWalking的环境进行注入,遂进行debug操作。

02

环境说明

    这里使用的是jar包起的skywalking的环境,Jetty环境为9.4.40

JDK环境为1.8.0_181

Apache log4j专项测试-Skywalking注入冰蝎内存马

03

原理分析

    无法注入的原因必须要进行判断,首先这里使用solr内存马注入的方式(https://tttang.com/archive/1386/)获取ContextClassLoader的方法

已经失败,这里获取到的ContextClassLoader都是sun.misc.Launcher$AppClassLoader,显然无法通过下面的Demo进行获取

Apache log4j专项测试-Skywalking注入冰蝎内存马

使用feihong-JNDI注入工具获取webAppContext也以失败告终

Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马

那么必须寻找一种新的方式去注入内存马,通过从当前线程获取到threadLocals,找到了一个可以获取到context的value

Apache log4j专项测试-Skywalking注入冰蝎内存马

最后整体实现的Demo如下:

Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马

通过Debug看到filter确实被注入到了skywalking当中,但是注入失败了(我filter都注了,现在告诉我不行),流程还需要继续探究

Apache log4j专项测试-Skywalking注入冰蝎内存马

那么重新回到skywalking的启动文件,在skywalking启动的时候发现有两个窗口,一个是webapp,spring起的

一个是Collector是Jetty起的,经过debug发现,请求过来会先过spring,那么这个时候考虑注入netty内存马(https://mp.weixin.qq.com/s/S15erJhHQ4WCVfF0XxDYMg),但是也失败了(失败的原因没有详细分析,着急赶工了),从报错的信息我看到一点提示

Apache log4j专项测试-Skywalking注入冰蝎内存马

用于graphql功能的实现了一个Handler,本质上是一个Servlet,那么看下怎么去添加一个Servlet,Jetty的Servlet存储在ServletContextHandler中,跟到这个类,看下有无addServlet类似的方法,这里确实是有的

Apache log4j专项测试-Skywalking注入冰蝎内存马

这里选择使用参数比较简单的第一种addServlet方法,反射少些一些东西,原先的servlet类,避免中间件实现包装的Request方法而导致request.getReader().readLine();失效,这里获取请求来的内容时,先获取InputStream,然后转为字符串

Apache log4j专项测试-Skywalking注入冰蝎内存马

然而当我尝试将冰蝎的key放入到session中时,发现在skywalking中没有session的对象信息

Apache log4j专项测试-Skywalking注入冰蝎内存马

于是尝试构建一个新的sessionHandler之类的对象,来初始化session信息,失败的Demo如下

Apache log4j专项测试-Skywalking注入冰蝎内存马

为了排除掉session的影响,使用改版过的冰蝎,不用密钥交换

Apache log4j专项测试-Skywalking注入冰蝎内存马

然而在注入servlet之后,发现这里对路径有特殊要求,如果不是/graphql/*这种路径,返回的就是个静态页面

Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马

所以将路径注入为/graphql/*,最后的完整Demo如下:

Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马

恶意ServletDemo如下:

Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马
Apache log4j专项测试-Skywalking注入冰蝎内存马

冰蝎连接:

Apache log4j专项测试-Skywalking注入冰蝎内存马

改版后的冰蝎Demo链接:

https://github.com/shuimuLiu/Behinder-Base65

END

可以在星球里跟我讨论交流。星球里有一千六百多位同样爱好安全技术的小伙伴一起交流!

Apache log4j专项测试-Skywalking注入冰蝎内存马

如果你想参加红队培训,可以关注如下:

2022 I-IVV 红队培训之内网渗透

2022 I-IVV 红队培训之Web基础安全

红队培训之Java代码审计

原文始发于微信公众号(谢公子学安全):Apache log4j专项测试-Skywalking注入冰蝎内存马

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月17日09:55:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apache log4j专项测试-Skywalking注入冰蝎内存马http://cn-sec.com/archives/1013792.html

发表评论

匿名网友 填写信息