靶机信息
可以通过访问极核官方靶场开启靶机实验:极核靶场 -> 渗透测试靶场 -> JAVA CC – 反序列化
漏洞科普
Java CC 链是指利用 Java 中广泛使用的第三方库 Apache Commons Collections 里的功能特性构建的一条攻击路径(Gadget Chain)。这个库里有一个核心接口叫 Transformer(特别是 InvokerTransformer),它的本意是为了方便开发者对集合中的数据进行批量转换或处理。攻击者发现,可以通过“反射机制”将这些转换操作串联起来,形成一个精心设计的对象链条。
攻击原理就像“多米诺骨牌”: 攻击者构造一段恶意的序列化数据发送给服务器。当服务器接收并反序列化(还原)这段数据时,会自动触发链条的起点(通常是一个被修改过的 Map 对象)。这会引发一连串的连锁反应:程序误以为在进行正常的数据变换,实际上却在一步步执行攻击者预设的指令。最终,这个链条的末端会通过 Java 反射调用系统命令(如 Runtime.exec),从而让攻击者直接接管服务器(RCE)。
靶机实战
开启靶机后进行访问,首页是一个登录页面。
![图片[1] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image.png)
首先进行口令爆破,使用常规的用户名和弱口令进行爆破,登录成功会302跳转,以此判断。最终获取到口令:admin / admin123 进入后台。
![图片[2] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-1.png)
![图片[3] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-2.png)
进入后台后,查看数据包,在Cookie位置发现OA_SESSION存在序列化字符串(判断关键字符rO0AB)
rO0ABXNyAB1jb20uY2MudnVsbi5tb2RlbC5Vc2VyU2Vzc2lvbgAAAAAAAAABAgADTAAKZGVwYXJ0bWVudHQAEkxqYXZhL2xhbmcvU3RyaW5nO0wABHJvbGVxAH4AAUwACHVzZXJuYW1lcQB+AAF4cHQACeaKgOacr+mDqHQAD+ezu+e7n+euoeeQhuWRmHQABWFkbWlu
![图片[4] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-4.png)
通过序列化链子生成工具 JavaGadgetGenerator ,选择GadgetChain(利用链),Gadget模块选择sleep,编码格式选择base64,通过不断生成利用链来请求数据包,如果响应时间超过设定的Sleep时间,那么利用链大概率就是存在的。
通过不断生成利用链来进行探测,最终发现:CC6的链子可以利用,响应时间超过了设定的五秒。
![图片[5] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-5.png)
![图片[6] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-6.png)
在使用Gadget模块:dnslog 进行二次判断,判断是否出网有响应。
![图片[7] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-7.png)
![图片[8] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-8.png)
DNSLOG有响应,说明利用链可用且出网。
![图片[9] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-9.png)
此处利用方法不唯一
接下来针对CC6的利用链进行GetShell,此处我是用一键命令来上线C2,这里演示的是Vshell 。
首先配置好Vshell的监听器(过程略),复制一键上线命令。在反序列化利用工具的Gadget模块选择LinuxCMD,参数填一键上线的命令,然后生成Payload,复制Payload到请求包进行发送。
![图片[10] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-10.png)
![图片[11] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-11.png)
该操作相当于让目标的服务器执行了Linux命令:一键上线C2 Shell,不久后就会Vshell的客户端就上线了。
![图片[12] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-12.png)
接下来就很简单了,查看根目录 /flag 即可获取flag。
![图片[13] - 【靶机实战】JAVA CC 反序列化 - 极核GetShell](https://get-shell.com/wp-content/uploads/2025/12/image-13.png)















暂无评论内容