CVE-2021-42567 Apereo CAS單點登錄系統REST API接口XSS漏洞
VSole2021-12-30 09:58:35
漏洞信息
Apereo CAS 是一個開源的企業級單點登錄系統,很多統一認證系統都是基于此系統二次開發。Apereo CAS從v3.x啟動REST protocol support,2021年12月爆出Apereo CAS 在REST API接口存在XSS漏洞。漏洞觸發條件如下:
Apereo CAS v6.3.x系列滿足v6.3.7.1以前版本,v6.4.x系列滿足v6.4.2版本;Apereo CAS啟動Restful API接口(默認不開啟)
漏洞分析
下載`CAS-Overlay-Template`,Restful API接口默認是不開啟的,在編譯前需要修改`buid.gradle`,加入下面的配置:
implementation "org.apereo.cas:cas-server-support-rest:${project.'cas.version'}"

生成war包后導入Tomcat即可。查看`Ticket-Granting Ticket REST Protocol`:

`Ticket-Granting Ticket REST Protocol`的處理代碼位于`org.apereo.cas.support.rest.resources.TicketGrantingTicketResource`:

登錄信息認證失敗后,將拋出`AuthenticationException`異常,進入`RestResourceUtils.createResponseEntityForAuthnFailure`:

輸入的用戶名寫入日志,同時包含用戶名字符串的HTTP數據包直接返回給用戶。

存在反射型XSS漏洞。

寫在最后
上面講到了認證信息還會寫入日志,由于v6.4.1及以下版本的日志模塊為`log4j-core-2.14.1`,所以`Ticket-Granting Ticket REST`也是Apache Log4j2 JNDI注入漏洞的一個觸發點,結合其他手段可以實現RCE,這里就不過多贅述了,有興趣的小伙伴可以自行研究。
VSole
網絡安全專家