漏洞复现-Spring Security OAuth2 远程命令执行漏洞(CVE-2016-4977)

漏洞原理

Spring Security OAuth2处理认证请求的时候如果使用了whitelabel视图,response_type参数值会被当做Spring SpEL来执行,恶意攻击者通过构造response_type值可以触发远程代码执行漏洞 

复现环境

在ubuntu 16.04虚拟机中用vulhub靶场提供的docker容器来复现

jdk版本1.7

python版本3.5

影响版本

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

复现过程

1. 进入vulhub目录:spring/CVE-2016-4977,启动docker容器

2. 对反弹shell的POC进行base64编码(java反弹shell都需要先编码,不然不会成功,原因貌似是runtime不支持管道符)

3. 用vulhub提供的poc.py生成反弹shell的POC:

4. 监听反弹端口,并访问下面的url:

http://your-ip:8080/oauth/authorize?response_type=上面的那一长串POC&client_id=acme&scope=openid&redirect_uri=http://test

反弹成功,从返回页面来看,这里实际上是利用抛出的错误消息来执行恶意代码的,漏洞代码的位置应该在内部错误处理的代码中。

本文仅用于技术学习和交流,严禁用于非法用途,否则产生的一切后果自行承担。

原文地址:https://www.cnblogs.com/sallyzhang/p/12373069.html