前言
今天运维反馈现网有个系统http://aaa-test-env.com/cas/logout?service=http://www.evil.com/存在重定向钓鱼网站的安全漏洞。熟悉Cas实现单点登录的都知道,通过service参数,在Cas认证中心登录认证之后重定向到service对应的业务系统。但是Cas本身没有对service进行校验,所以就有别有用心之人,通过在service后面配置一些钓鱼网站。这样就会实现,从你的网站跳转到钓鱼网站。
解决措施
其实解决措施很简单,就是在Nginx层面针对/cas/logout做拦截,如果/cas/logout后面的service参数不是以http://aaa-test-env.com开头,就直接return 403。这样就可以保障是同源网站了
location /cas/logout {if ($arg_service !~ "^http://aaa-test-env.com") {return 403;}proxy_pass http://cas_bbb;
}